oracle存储过程
简述
保存在数据库中命名的可传若干参数且通常没有返回值的PL/SQL程序块.不能直接被sql调用执行,而是通过execute命令或PL/SQL程序块中调用执行.
语法格式
Create [or replace] procedure 存储过程名称 [(参数)] is|as
Begin
主体代码
[exception
异常处理语句]
End [名称];
说明: 1.or replace中的or不能省略
2.Create or replace没有就创建,有就覆盖原有的
3.创建之后,主体语句只是被编译并没有被执行
调用执行
1.execute命令
Execute 存储过程名称;
2.用PL/SQL程序块
Begin
...
存储过程名称;
End;
参数模式
1.in模式(输入类型参数,参数由调用者传入,且只能被存储过程读取)
参数名 in 数据类型 [default 默认参数值]
使用default说明:
a.使用default可以给参数设置默认值.
b.当使用默认值时,想要给一些带默认值的传值,另一些不传值的时候,此时用按名称 传值的方式比较方便
传入参数的三种方式
A.指定名称传递 (参数名=>传入的参数值...,参数名=>传入的参数值)
B.按位置传递 (参数值...,参数值)
C.混合方式传递 将上面两种方式结合起来,不过要先按位置传递,后面按名称传递
(参数值...,参数值,参数名=>传入的参数值...,参数名=>传入的参数值)
2.Out模式(输出类型参数,参数值可以传递到当前存储过程以外的环境中)
变量名 out 数据类型
调用out模式存储过程:
A.在PL/SQL块中调用
在declare部分声明变量,将参数传入之后就可以直接使用
B.用execute命令调用
使用variable定义变量(variable 变量名 数据类型)
Execute 存储过程名(参数)(Execute 存储过程名(15,:变量名);
说明:15是in的值,直接传值即可,后面是out类型的值,要使用定义的变量接收, 且前面要加上:
然后使用print或select语句输出值
Print 变量名 变量名;
Select :变量名,:变量名 from dual;
3.In out模式(将in模式和out模式结合起来)
变量名 in out 数据类型;