一个完整包的开发实例
2010-09-16 14:40
447 查看
CREATE OR REPLACE PACKAGE emp_pkg AS
--声明一个过程
PROCEDURE add_emp(emp_record emp%Rowtype);
--声明一个函数
FUNCTION get_info(eno emp.empno%TYPE)
RETURN emp%ROWTYPE;
END;
/
CREATE OR REPLACE PACKAGE BODY emp_pkg IS
--过程定义
PROCEDURE add_emp(emp_record emp%Rowtype)IS
--自定义一个异常
e_2291 EXCEPTION;
--异常和错误编号关联
PRAGMA EXCEPTION_INIT (e_2291,-2294);
BEGIN
INSERT INTO emp VALUES emp_record;
EXCEPTION
WHEN dup_val_on_index THEN
RAISE_application_error(-20010,'雇员编号不能重复');
WHEN dup_val_on_index THEN
RAISE_application_error(-2011,'部门不存在');
END;
--函数定义
FUNCTION get_info(eno emp.empno%TYPE) RETURN emp%ROWTYPE IS
emp_record emp%ROWTYPE;
BEGIN
SELECT*INTO emp_record FROM emp WHERE empno=eno;
RETURN emp_record;
EXCEPTION
WHEN no_data_found THEN
raise_application_error(-20010,'雇员不存在');
END;
END emp_pkg;
/
--调用包中的过程
DECLARE
emp_record emp%ROWTYPE;
BEGIN
emp_record.empno:=&eno;
emp_pkg.add_emp(emp_record);
END;
/
--调用包中的函数
DECLARE
emp_record emp%ROWTYPE;
BEGIN
emp_record:=emp_pkg.get_info(&eno);
END;
--声明一个过程
PROCEDURE add_emp(emp_record emp%Rowtype);
--声明一个函数
FUNCTION get_info(eno emp.empno%TYPE)
RETURN emp%ROWTYPE;
END;
/
CREATE OR REPLACE PACKAGE BODY emp_pkg IS
--过程定义
PROCEDURE add_emp(emp_record emp%Rowtype)IS
--自定义一个异常
e_2291 EXCEPTION;
--异常和错误编号关联
PRAGMA EXCEPTION_INIT (e_2291,-2294);
BEGIN
INSERT INTO emp VALUES emp_record;
EXCEPTION
WHEN dup_val_on_index THEN
RAISE_application_error(-20010,'雇员编号不能重复');
WHEN dup_val_on_index THEN
RAISE_application_error(-2011,'部门不存在');
END;
--函数定义
FUNCTION get_info(eno emp.empno%TYPE) RETURN emp%ROWTYPE IS
emp_record emp%ROWTYPE;
BEGIN
SELECT*INTO emp_record FROM emp WHERE empno=eno;
RETURN emp_record;
EXCEPTION
WHEN no_data_found THEN
raise_application_error(-20010,'雇员不存在');
END;
END emp_pkg;
/
--调用包中的过程
DECLARE
emp_record emp%ROWTYPE;
BEGIN
emp_record.empno:=&eno;
emp_pkg.add_emp(emp_record);
END;
/
--调用包中的函数
DECLARE
emp_record emp%ROWTYPE;
BEGIN
emp_record:=emp_pkg.get_info(&eno);
END;
相关文章推荐
- 一个较完整的开发实例
- UFT开发实例:一个完整的测试框架源码
- 从无到有(统计、请求、MVC、模块化)H5开发须知--一个完整的实例
- Unix/Linux C++应用开发-一个完整的C++实例
- Android UI开发第十六篇——分享一个popuwindow实例
- 一个C++开发App的代码实例分析
- 用MyEclipse10在5分钟之内开发一个基于JAX-WS的Web Service实例
- 从零开发一个完整的Android项目(九)——图片浏览
- JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
- Spring+Hibernate整合开发配置,完整实例
- 开发一个完整的JavaScript组件
- ArcGIS API for Silverlight开发入门(2):一个基础地图实例
- 如何快速的开发一个完整的iOS直播app(原理篇)
- IOS开发之 一个实例解析 录音
- 一个掌握Struts企业级Web开发框架的实例
- 一个完整的软件项目开发流程
- 用Installshield制作一个完整程序实例(一)--基本设置(一)
- 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一
- nodeJS学习(8)--- WS/...开发 NodeJS 项目-节3 <使用 mongodb 完整实例过程>
- 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一