ITPub博客

首页 > 数据库 > Oracle > Oracle程序包

Oracle程序包

原创 Oracle 作者:zhenghaishu 时间:2014-08-10 15:33:24 0 删除 编辑
Oracle程序包

    程序包用于将逻辑相关的PL/SQL块或元素(变量、常量、过程、函数等)组织在一起,作为一个完整的单元存储在数据库中,用包名称来标识程序包。程序包类似于面向对象中的类。
    程序包由两部分构成:规范(specification)和主体(body)。程序包规范就是包说明,对包的所有部件进行一个简单的声明。其中的函数、过程、变量、常量和游标都是公共的,可以被外界应用程序在执行过程中调用。主体则是函数和存储过程的具体实现。

1 创建规范
create or replace package pkg_emp as
  function getEmpCount return number;
  procedure update_sal;
  procedure insert_emp(emp_name in varchar2, dept_no in number, original_count out number, current_count out number);
end pkg_emp;
/

Package created.

2 创建主体
create or replace package body pkg_emp as
  function getEmpCount return number as
  begin
    declare emp_count number;
    begin
      select count(1) into emp_count from emp_copy;
      return emp_count;
    end;
  end getEmpCount;

  procedure update_sal as
  begin
    update emp set sal = sal * 3;
    commit;
  end update_sal;

  procedure insert_emp(emp_name in varchar2, dept_no in number, original_count out number, current_count out number) as
  begin
    declare max_empno number;
    begin
      if(emp_name is null or length(emp_name) = 0) then
        return;
      end if;

      if(dept_no != 60) then
        return;
      end if;

      select count(1) into original_count from emp_copy;
      select max(empno) into max_empno from emp_copy;
      insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
      select count(1) into current_count from emp_copy;
    end;
  end insert_emp;

end pkg_emp;
/

Package body created.

3 调用程序包
select pkg_emp.getEmpCount from dual;

GETEMPCOUNT
-----------
     16






来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29485627/viewspace-1248731/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-02-14

  • 博文量
    112
  • 访问量
    1057349