10.程序包
2016-07-24 22:39
211 查看
一.示例1
程序包示例2
--一、程序包中使用子程序:存储过程和函数 --1.创建程序包头 create or replace package emp_package is minsal emp.sal%type; maxsal emp.sal%type; --(1).添加雇员信息,添加的员工工资不能低于最低,不能高于最高 procedure add_emp(p_eno number,p_name varchar2,p_sal number,p_dno number) ; --(2)通过雇员编号修改雇员工资 procedure upd_sal(p_eno number,p_sal number); --(3).通过雇员姓名修改雇员工资 procedure upd_sal(p_name varchar2,p_sal number); --(4).通过雇员编号查询雇员工资 function get_sal(p_eno number) return number; end emp_package; / --2.创建程序包体 create or replace package body emp_package is --(1)添加雇员信息 procedure add_emp(p_eno number,p_name varchar2,p_sal number,p_dno number) is begin if p_sal between minsal and maxsal then insert into emp(empno,ename,sal,deptno) values(p_eno,p_name,p_sal,p_dno); else dbms_output.put_line('工资不在范围内!'); end if; exception when dup_val_on_index then dbms_output.put_line('该雇员已经存在'); end; --(2)通过雇员编号修改雇员工资 procedure upd_sal(p_eno number,p_sal number) is begin if p_sal between minsal and maxsal then update emp set sal=p_sal where empno=p_eno; if sql%notfound then dbms_output.put_line('该雇员不存在'); end if; else dbms_output.put_line('工资不在范围内'); end if; end; --(3).通过雇员姓名修改雇员工资 procedure upd_sal(p_name varchar2,p_sal number) is begin if p_sal between minsal and maxsal then update emp set sal=p_sal where ename=p_name; if sql%notfound then dbms_output.put_line('该雇员不存在'); end if; else dbms_output.put_line('工资不在范围内'); end if; end; --(4).通过雇员编号查询雇员工资 function get_sal(p_eno number) return number is v_sal emp.sal%type; begin select sal into v_sal from emp where empno=p_eno; return v_sal; exception when no_data_found then dbms_output.put_line('该雇员不在'); end; begin select min(sal),max(sal) into minsal,maxsal from emp; end emp_package; / --3.调用程序包中子程序 --(1)调用添加雇员信息 set serverout on begin emp_package.add_emp(5000,'mary',300,20); dbms_output.put_line('添加成功'); commit; end; / --(2)通过雇员编号查询雇员信息 set serverout on declare v_sal emp.sal%type; begin v_sal:=emp_package.get_sal(1111); dbms_output.put_line('7369的雇员工资为:'||v_sal); end; / --二、程序包中的游标使用 --1.创建程序包包头 create or replace package emp_cursorPack is type type_emp_cursor is ref cursor; end emp_cursorPack; / --2.创建存储过程并且游标作为输出参数 create or replace procedure proc_emp(cur out emp_cursorPack.type_emp_cursor) as begin open cur for select empno,sal from emp; end proc_emp; / --3.调用存储过程提取返回的游标内容 set serverout on declare --定义员工编号 v_empno emp.empno%type; --定义员工工资 v_sal emp.sal%type; --定义游标类型的变量 emp_sal emp_cursorPack.type_emp_cursor; begin --调用存储过程,并将一堆数据存放在游标变量中 proc_emp(emp_sal); --循环提取游标内容 loop fetch emp_sal into v_empno,v_sal; exit when emp_sal%notfound; dbms_output.put_line(v_empno||'的薪水是'||v_sal); end loop; close emp_sal; end; /
程序包示例2
相关文章推荐
- LeetCode--77_Combinations
- Issure: LookupError: unknown encoding: cp65001
- 如何把项目放到GitHub上
- Spring Data JPA 学习笔记(一)
- Linux驱动开发必看
- Leetcode 18. 4Sum (Medium) (cpp)
- 【iOS开发】简易加法计算器的实现
- Codeforces Round #364 (Div. 1) B. Connecting Universities
- Oracle 学习:约束、查询语句
- 【HDU杭电 2035】人见人爱A^B
- 使用jdk1.7与spring 2.5 jar包冲突的解决
- 开发工具集
- 设计模式之工厂模式——应用最广泛的模式
- Android的线程与线程池
- UVA 11624 Fire! 【特殊BFS】
- 【Java】排序之Java的Sort函数
- POJ 3468 A Simple Problem with Integers
- DFS及其应用 专题
- 9.函数
- python 学习(三)变量类型