PL/SQL包3(使用包构造过程)
2014-03-24 20:55
162 查看
在包中定义了全局变量之后,有些情况下,会话中可能还需要初始化全局变量,此时可以使用包的构造过程,这种过程类似于高级语言中的构造函数和构造方法。
1、建立包规范
1、建立包规范
CREATE OR REPLACE PACKAGE emp_package 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 emp_package;2、建立包体
CREATE OR REPLACE PACKAGE BODY emp_package 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(-20000,'工资不在范围内'); END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN RAISE_APPLICATION_ERROR(-20001,'雇员已存在'); 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(-20002,'不存在该雇员号'); END IF; ELSE RAISE_APPLICATION_ERROR(-20000,'工资不在范围内'); 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(-20002,'不存在该雇员号'); END IF; ELSE RAISE_APPLICATION_ERROR(-20000,'工资不在范围内'); END IF; END; --包构造过程 BEGIN SELECT MIN(sal),MAX(sal) INTO minsal,maxsal FROM emp; END emp_package;3、调用包公用组件
SQL> EXEC emp_package.add_employee(1114,'MARY',3000,20); SQL> EXEC emp_package.upd_sal('MARY',2000);
相关文章推荐
- 给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法
- ReportView如何使用构造SQL语句带参数的存储过程创建报表以及为rdlc传递参数
- 分页存储过程(一)使用sql2005的新函数构造分页存储过程
- 给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法
- Android 使用AlertDialog.Builder构造对话框dialog全过程
- 新手在应用程序中高效的使用存储过程方法
- 条款09:绝不在构造和析构过程中调用virtual函数
- 使用均匀分布随机数产生器构造任意分布的随机数产生器
- Maven:安装过程以及在eclipse上的使用
- 使用脚本加速 DB2 存储过程的开发
- 【完整靠谱版】结合公司项目,仔细总结自己使用百度编辑器实现FTP上传的完整过程
- 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(3)
- Mongodb使用过程中的优化原则
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
- 使用JSTL改进JSP来简化网页的实现过程概述
- MySQL 存储过程不能使用return的解决方法
- 数据挖掘RapidMiner工具使用----产品介绍与安装过程
- 在Oracle过程中使用游标
- vs2008突然不能使用查找功能了(找不到要查找的文件 查找进行的过程中被停止)
- python web.py使用flup lighttpd优化过程