oracle存储过程和自定义函数
create [or replace] PRocedure 过程名(参数列表)
AS
PLSQL 子程序体;
存储过程写完之后,要调用这个存储过程;
有两种方法:
1.exec 存储过程名();
2.PL/SQL
begin
存储过程名();
end;
/
如何调试和运行PL/SQL 语句;
进入debeg 模式
函数(Function)为一命名的存储程序;可带参数,并返回一计算值;用PL/SQL 语句的写的程序;
函数和过程的结构类似,但是必须有一个RETURN 子句,用于返回函数值;
create [or replace] FUNCTION 函数名(参数列表);
return 函数值类型;
as
PLSQL子程序体;
in 和out 参数;
一般来讲,存储过程和存储函数的区别在于存储函数可以有一个返回值;
而存储过程没有返回值;
过程和函数都可以通过out指定一个或者多个输出参数,我们可以利用out参数,在过程和函数实现返回多个值;
存储过程和存储函数都可以有out参数:
存储过程和存储函数都可以有多个out参数;
存储过程可以通过out参数来实现返回值;
什么时候用存储过程/存储函数;
原则:
如果只有一个返回值,用存储函数,否则,就用存储过程;
在应用程序中如何调用存储函数和存储过程;
out参数使用光标;
申明包结构、包头、包体;
包头:
create or replace package mypackage as
type empcursor is ref cursor;
procedure queyEmpList(dno in number,empList out empcursor);
end mypackage;
包体:
create or peplace package body mypackage as
procedure queryEmList(dno in number,empList out empcursor) AS
BEGIN
open empList for select * from emp where deptno = dno ;
END queryEmpList;
END MYPACKAGE;
包体需要实现包头中声明的所有方法;
可以在命令行里查看程序包的结构;
使用desc 查看程序包的结构;
desc MYPACKAGE;(你想查看的包的名称);
在应用程序中访问包中的存储过程;
注意:需要带上包名;