扩大
缩小

开发PL/SQL子程序——包


包用于逻辑组合的pl/sql类型,项,子程序,它有包规范和包体两部分组成。

例子:建立包规范

create or replace package emp_package is
g_deptno number(3):=30;
procedure add_employee(eno number ,name varchar2,salary number,dno number default g_deptno);
procedure fire_employee(eno number);
function get_sal(eno number) return number;
end emp_package;
/

例子:建立包体

create or replace package body emp_package is
function validate_deptno(v_deptno number ) return boolean
is v_temp int;
begin 
select 1 into v_temp from dept where deptno=v_deptno;
return true;
exception when no_data_found then
return false;
end;
procedure add_employee(eno number,name varchar2,salary number,dno number default g_deptno)
is
begin
if validate_deptno(dno) then
insert into emp(empno,ename,sal,deptno) values (eno,name,salary ,dno);
else
raise_application_error(-20010,'不存在该部门');
end if;
exception when dup_val_on_index then
raise_application_error(-20011,'该雇员已经存在');
end;
procedure fire_employee(eno number) is
begin
delete from emp where empno=eno;
if sql%notfound then
raise_application_error(-20012,'该雇员不存在');
end if;
end;
function get_sal(eno number) return number 
v_sal emp.sal%type;
begin
selectsal into v_sal from emp where empno=eno;
return v_sal;
exception when no_data_found then
raise_application_error(-20012,'该雇员不存在');
end;
end emp_package;
/

exec emp_package.g_deptno:=20
exec emp-package.add_employee(1112,'CLERK',2000,10)
var salary number
exec :salary:=emp_package.get-sal97788)
printf salary

删除包:

drop packae emp_package

显示包:

select text from user_source
where name='EMP_PACKAGE' AND type ='PACKAGE';

 

posted on 2013-05-03 22:03  LinuxPanda  阅读(225)  评论(0编辑  收藏  举报

导航