设为首页 加入收藏

TOP

oracle数据库基础教程之32包(子程序重载)
2018-04-17 09:08:02 】 浏览:64
Tags:oracle 数据库 基础 教程 子程序 重载

oracle数据库基础教程之32包(子程序重载)

直接上代码吧

--根据员工号或员工姓名获取员工的信息
--根据员工号或员工姓名删除员工的信息
--创建包规范
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;  



--根据员工的姓名删除员工的信息
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;  

编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数据库怎么用ShowProfile进行sql.. 下一篇Oracle数据库的常用操作语句

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }