Oracle存储过程语法
Oracle的存储过程语法如下:
?
1 2 3 4 5 6 |
create procedure 存储过程名称(随便取) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end ; |
(2)带参数的存储过程语法:
?
1 2 3 4 5 6 |
create procedure 存储过程名称(随便取) (变量1 数据类型,变量2 数据类型,...,变量n 数据类型) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end ; |
(3)带输入、输出参数的存储过程语法:
?
1 2 3 4 5 6 |
create procedure 存储过程名称(随便取) (变量1 in (或 out ) 数据类型,变量2 in (或 out ) 数据类型,...,变量n in (或 out ) 数据类型) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end ; |
注意:用上面的语法创建存储过程时可能会碰到数据库中已经有了同名的存储过程,这样Oracle就会弹框报错,说名字已被现有对象使用。解决方法有两种:
方法一:换个存储过程名
方法二:在最开头的create procedure 之间加上 or replace 关键字,例如:create or replace procedure 存储过程名称。但是这种方法不建议使用,因为这种方法会把之前同名的存储过程替换为你当前写的这个
存储过程案例一:没参数的存储过程
?
1 2 3 4 5 |
create replace procedure procedure_1 is begin dbms_output.put_line( 'procedure_1.......' ); end ; |
存储过程案例二:带参数的的存储过程
?
1 2 3 4 5 6 7 8 |
create procedure procedure_2(v_i number,v_j number) is v_m number(5); begin dbms_output.put_line( 'procedure_2.......' ); v_m := v_i + v_j; dbms_output.put_line(v_i|| ' + ' ||v_j|| ' = ' ||v_m); end ; |
存储过程案例三:带输入、输出参数的存储过程
存储过程的参数分为输入参数和输出参数,
输入参数:输入参数一般会在变量名和数据类型之间加in来表示该参数是输入参数
输出参数:输出参数一般会在变量名和数据类型之间加out来表示该变量是输出参数
不写in和out的话,默认为输入参数
?
1 2 3 4 5 6 7 |
create procedure procedure_3(v_i in number,v_j in number ,v_m out number) is begin dbms_output.put_line( 'procedure_3.......' ); v_m:=v_i - v_j; dbms_output.put_line(v_i|| ' - ' ||v_j|| ' = ' ||v_m); end ; |
PL/SQL块中调用存储过程
下面以调用上面三个存储过程为例
?