zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    计算机网络
    二叉树
    队列
    百度脑图-离线版(支持Linux、Mac、Win)
    nested exception is java.lang.NoClassDefFoundError: javax/xml/soap/SOAPElement
    手写注解实现SpringMVC底层原理(虽简单却五脏俱全《注重思路》)
    java异常
    JVM相关
    redis相关总结
    mysql 数据库相关
  • 原文地址:https://www.cnblogs.com/xiaomifeng1010/p/11135421.html
Copyright © 2011-2022 走看看