包 数据库oracle,Oracle数据库---包,

Oracle数据库---包,

--根据员工号或员工姓名获取员工的信息

--根据员工号或员工姓名删除员工的信息

--创建包规范

CREATE OR REPLACE PACKAGE overload_pkg

IS

FUNCTION get_info(eno NUMBER) RETURN emp%ROWTYPE;

FUNCTION get_info(name VARCHAR2) RETURN emp%ROWTYPE;

PROCEDURE del_emp(eno NUMBER);

PROCEDURE del_emp(name VARCHAR2);

END;

--创建包体

CREATE OR REPLACE PACKAGE BODY overload_pkg

IS

FUNCTION get_info(eno NUMBER) 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(-20020,'不存在此员工!');

END;

FUNCTION get_info(name VARCHAR2) RETURN emp%ROWTYPE

IS

emp_record emp%ROWTYPE;

BEGIN

SELECT * INTO emp_record FROM emp WHERE ename = name;

RETURN emp_record;

EXCEPTION

WHEN NO_DATA_FOUND THEN

RAISE_APPLICATION_ERROR(-20020,'不存在此员工!');

END;

PROCEDURE del_emp(eno NUMBER)

IS

BEGIN

DELETE FROM emp WHERE empno = eno;

IF SQL%NOTFOUND THEN

RAISE_APPLICATION_ERROR(-20020,'不存在此员工');

END IF;

END;

PROCEDURE del_emp(name VARCHAR2)

IS

BEGIN

DELETE FROM emp WHERE ename = name;

IF SQL%NOTFOUND THEN

RAISE_APPLICATION_ERROR(-20020,'不存在此员工');

END IF;

END;

END;

--调用

--根据员工号查询员工信息

DECLARE

emp_record emp%rowtype;

e_no_emp EXCEPTION;

PRAGMA EXCEPTION_INIT(e_no_emp,-20020);

BEGIN

emp_record:= overload_pkg.get_info(&no);

DBMS_OUTPUT.PUT_LINE('员工号:'||emp_record.empno||'姓名:'||emp_record.ename||'工资:'||emp_record.sal);

EXCEPTION

WHEN e_no_emp THEN

DBMS_OUTPUT.put_line(SQLERRM);

END;

--根据员工姓名查询员工信息

DECLARE

emp_record emp%rowtype;

e_no_emp EXCEPTION;

PRAGMA EXCEPTION_INIT(e_no_emp,-20020);

BEGIN

emp_record:= overload_pkg.get_info('&name');

DBMS_OUTPUT.PUT_LINE('员工号:'||emp_record.empno||'姓名:'||emp_record.ename||'工资:'||emp_record.sal);

EXCEPTION

WHEN e_no_emp THEN

DBMS_OUTPUT.put_line(SQLERRM);

END;

--根据员工号删除员工信息

DECLARE

e_no_emp EXCEPTION;

PRAGMA EXCEPTION_INIT(e_no_emp, -20020);

BEGIN

overload_pkg.del_emp(&no);

COMMIT;

EXCEPTION

WHEN e_no_emp THEN

DBMS_OUTPUT.put_line(SQLERRM);

ROLLBACK;

END;

SELECT * FROM EMP;

--根据员工的姓名删除员工的信息

DECLARE

e_no_emp EXCEPTION;

PRAGMA EXCEPTION_INIT(e_no_emp, -20020);

BEGIN

overload_pkg.del_emp('&name');

COMMIT;

EXCEPTION

WHEN e_no_emp THEN

DBMS_OUTPUT.put_line(SQLERRM);

ROLLBACK;

END;

http://www.dengb.com/oracle/1359695.htmlwww.dengb.comtruehttp://www.dengb.com/oracle/1359695.htmlTechArticleOracle数据库---包, --根据员工号或员工姓名获取员工的信息 --根据员工号或员工姓名删除员工的信息 --创建包规范 CREATE OR REPLACE PACKAGE ove...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值