包是过程和函数的集合体,包包括创建包和创建包体,创建包的时候在可以定义过程和函数,包体中则具体实现过程和函数。
eg:
--创建包
create or replace package mypac1 is
procedure mypro1(p_ename varchar2,p_sal number);
function myfun1(f_ename varxhar2) return number;
end;
--创建包体
create package body mypac1 is
procedure mypro1(p_ename varchar2,p_sal number) is--创建过程
begin
update sal set sal=p_sal where ename=p_ename;
end;
function myfun1(f_ename varchar2) return number is yearsal number;--创建函数
begin
select sal*12+nvl(comm,0) into yearsal from emp where ename=f_ename;
return yearsal;
end;
end;
包中过程和函数的调用:在过程和函数之前需要加上包名
call mypac1.myro1('SCOTT',10000);
call mypac1.myFUN1('SCOTT',10000);