您的位置:首页 > 其它

一个完整包的开发实例

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: