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;(你想查看的包的名称);

在应用程序中访问包中的存储过程;

注意:需要带上包名;

原文地址:https://www.cnblogs.com/zht0915/p/4767966.html