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/
,如需转载,请注明出处,否则将追究法律责任。