oracle构造过程实例
包的构造过程是没有任何名称的,它是在实现了包的其他过程之后,以begin开始,以end结束的部分。
1,包头
create or replace package pkg_emp is
minsal number(6, 2);
maxsal number(6, 2);
procedure add_employee(eno number,
name varchar2,
salary number,
dno number);
procedure upd_sal(eno number, salary number);
procedure upd_sal(name varchar2, salary number);
end pkg_emp;
2,包体
create or replace package body pkg_emp is
procedure add_employee(eno number,
name varchar2,
salary number,
dno number) is
begin
if salary between minsal and maxsal then
insert into emp
(empno, ename, sal, deptno)
values
(eno, name, salary, dno);
else
raise_application_error(-20001, '工资不在范围内');
end if;
exception
when dup_val_on_index then
raise_application_error(-20002, '该雇员已经存在');
end;
procedure upd_sal(eno number, salary number) is
begin
if salary between minsal and maxsal then
update emp set sal = salary where empno = eno;
if sql%notfound then
raise_application_error(-20003, '不存在该雇员号');
end if;
else
raise_application_error(-20001, '工资不在范围内');
end if;
end;
procedure upd_sal(name varchar2, salary number) is
begin
if salary between minsal and maxsal then
update emp set sal = salary where upper(ename) = upper(name);
if sql%notfound then
raise_application_error(-20004, '不存在该雇员号');
end if;
else
raise_application_error(-20001, '工资不在范围内');
end if;
end;
--构造过程
begin
select min(sal), max(sal) into minsal, maxsal from emp;
end;