首页 > 代码库 > 程序包的使用
程序包的使用
一、程序包简使用
--创建一个程序包规范,以scott.emp表为数据
1 --程序包 2 create or replace package emp_package 3 is 4 minsal emp.sal%type;--最小工资 5 maxsal emp.sal%type;--最大工资 6 -- 添加员工信息 7 procedure addEmp(v_no number,v_name nvarchar2,v_sal number,v_deptno number); 8 -- 修改员工信息,根据编号 9 procedure updateSal(v_no number,v_sal number);10 -- 修改员工信息,根据姓名11 procedure updateSal(v_name nvarchar2,v_sal number);12 -- 获得员工的工资,根据编号13 function getSal(v_no number) return number;14 end;
--创建包的主体,以scott.emp表为数据
1 -- 包主体 2 create or replace package body emp_package 3 is 4 -- 添加员工信息 5 procedure addEmp(v_no number,v_name nvarchar2,v_sal number,v_deptno number) 6 is 7 begin 8 insert into emp(empno,ename,sal,deptno) values(v_no,v_name,V_sal,v_deptno); 9 end;10 -- 修改员工信息,根据编号 11 procedure updateSal(v_no number,v_sal number)12 is13 begin14 update emp set sal = v_sal where empno = v_no;15 commit;16 exception 17 when others then18 dbms_output.put_line(‘更新薪资时出现异常‘);19 rollback;20 end;21 -- 修改员工信息,根据姓名22 procedure updateSal(v_name nvarchar2,v_sal number)23 is24 begin25 update emp set sal = v_sal where ename = v_name;26 commit;27 exception 28 when others then29 dbms_output.put_line(‘更新薪资时出现异常‘);30 rollback;31 end;32 -- 获得员工的工资,根据编号33 function getSal(v_no number) return number34 is35 v_sal emp.sal%type;36 begin37 select sal into v_sal from emp where empno = v_no;38 return v_sal;39 end;40 begin41 select max(sal) into maxsal from emp;42 select min(sal) into minsal from emp;43 end;
以下是测试代码:
1 -- 程序包 2 declare 3 v_minsal emp.sal%type; 4 v_sal emp.sal%type; 5 begin 6 v_minsal :=emp_package.minsal; 7 dbms_output.put_line(v_minsal); 8 emp_package.updateSal(‘BLAKE‘,600.00); 9 v_sal :=emp_package.getSal(7698);10 dbms_output.put_line(v_sal);11 emp_package.addEmp(7777,‘abc‘,7000,10);12 end;
二、在程序包中使用静态游标
1 -- 定义包规范 2 create or replace package pkg_emp 3 is 4 cursor getEmpInfo(empno varchar2) return emp%rowtype; 5 end; 6 --定义包主体 7 create or replace package body pkg_emp 8 is 9 cursor getEmpInfo(empno varchar2) return emp%rowtype is 10 select * from emp where empno = empno;11 end; 12 -- 测试代码13 begin 14 for v_r in pkg_emp.getEmpInfo(7369) loop15 dbms_output.put_line(v_r.ename);16 end loop;17 end;
三、在程序包中使用动态游标
未完待续……
程序包的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。