oracle调用程序包,Oracle程序包

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博客 ” ,链接:http://blog.itpub.net/29485627/viewspace-1248731/,如需转载,请注明出处,否则将追究法律责任。

你可能感兴趣的:(oracle调用程序包)