day12_程序包

程序包:可将存储过程、函数、变量、常量和游标等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);






原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/07a0a63f3b5fa32faa9ee1565212d839.html