程序包:可将存储过程、函数、变量、常量和游标等PL/SQL程序设计元素组织起来,作为一个对象进行存储。
这样既方便实现,又便于维护和代码共享。
程序包也可以包含常量和变量,包中的所有函数和存储过程都可以使用这些变量或者常量。
一个完整的包由说明部分、包主体两部分组成。
这两部分需要分别建立,并分开存储在数据库,其中包说明部分可以独立存在,就是说可以没有包主体。
只有说明部分的包,常用于全局变量和标志变量的说明。
包的说明部分(包头):用于声明包中全局数据对象和程序单元。
包的主体部分:用于定义在说明部分中声明的函数和存储过程的具体实现。
1、创建说明部分(包头)
create or replace package pkg_emp as
function getEmpCount return number;
procedure update_sal;
procedure insert_emp(v_empno in number,v_ename in varchar2, v_sal in number, v_comm in number);
end pkg_emp;
/
2、创建主体
create or replace package body pkg_emp as
function getEmpCount return number as
begin
declare emp_count number;
begin
select count(*) into emp_count from emp;
return emp_count;
end;
end getEmpCount;
procedure update_sal as
begin
update emp set sal = sal * 3;
commit;
end update_sal;
procedure insert_emp(v_empno in number,v_ename in varchar2, v_sal in number, v_comm in number) as
begin
begin
insert into emp (empno ,ename,sal ,comm) values (v_empno ,v_ename,v_sal ,v_comm);
commit;
end;
end insert_emp;
end pkg_emp;
/
3、调用程序包
(1)select pkg_emp.getEmpCount from dual;
(2)exec pkg_emp.update_sal;
(3)exec pkg_emp.insert_emp(1,'1',1,1);