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;

原文地址:https://www.cnblogs.com/alang85/p/2140774.html