plsql-包

版权声明:欢迎指正,评论,共同学习 https://blog.csdn.net/m18994118189/article/details/82906539

package

将功能相近的函数和存储过程组织在一起

便于管理

包内函数可以重名,以提高程序的通用性

减少对象的名称占用问题

一个包内的函数被使用,整个包的定义都会被读入内存中

包内任何一个成员失效,整个包都需要重新编译

包,由包头和包体构成

 

包头

描述函数、存储所使用参数

可以独立存在

 

包体

函数和存储过程具体实现(PLSQL代码块)

不能独立存在

 

建立包头

create or replace package pkgoaec

is

function f1(no number) return number;

function f1(no emp.ename%type) return number;

procedure p1(v_no number);

end pkgoaec;

 

建立包体

create or replace package body pkgoaec

is

function f1

(no in number)

return number

is

v_sal emp.sal%type :=0;

begin

select sal into v_sal from e where empno=no;

return v_sal;

end f1;

function f1

(no in emp.ename%type)

return number

is

v_sal emp.sal%type :=0;

begin

select sal into v_sal from e where ename=no;

return v_sal;

end f1;

procedure p1

(v_no in number)

is

begin

update e set sal=sal+1 where empno=v_no;

commit;

end p1;

end pkgoaec;

 

验证和管理包

select text from user_source where name='PKGOAEC';

desc pkgoaec

 

包内函数的调用

select pkgoaec.f1(7900),pkgoaec.f1('KING') from dual;

 

在代码块中调用自定义的包

declare

v1 emp.sal%type;

v2 emp.sal%type;

begin

v1:=pkgoaec.f1(7900);

v2:=pkgoaec.f1('KING');

pkgoaec.p1(7900);

dbms_output.put_line(v1||' '||v2);

end;

/

 

删除包

drop package pkgoaec;

 

 

猜你喜欢

转载自blog.csdn.net/m18994118189/article/details/82906539