首页 > 其他 > 详细

程序包的编写和调用实例 --过程--函数的使用

时间:2019-09-27 14:02:40      阅读:120      评论:0      收藏:0      [点我收藏+]

编写一个程序包,包含如下功能:
1、编写一个过程,根据部门编号和入职日期,查询列出相应员工信息;
2、编写一个函数,根据部门编号统计平均工资。

同时写出程序包的过程和函数调用

--创建包的规范
CREATE OR REPLACE PACKAGE pack_test
AS
--定义游标
CURSOR cur_emp(pdeptno NUMBER,phiredate DATE) RETURN emp%ROWTYPE;
--过程声明
PROCEDURE getEmplByDeptnoAndHiredate(pdeptno NUMBER,phiredate DATE);
--函数声明
FUNCTION getAvgSal(pdeptno NUMBER) RETURN NUMBER;
END;
/


--创建包主体
CREATE OR REPLACE PACKAGE BODY pack_test
AS
--定义游标实现
CURSOR cur_emp(pdeptno NUMBER,phiredate DATE) RETURN emp%ROWTYPE
IS
SELECT * FROM emp WHERE deptno=pdeptno AND hiredate>=phiredate;

--过程实现
PROCEDURE getEmplByDeptnoAndHiredate(pdeptno NUMBER,phiredate DATE)
AS
vemp emp%ROWTYPE;
BEGIN
OPEN cur_emp(pdeptno,phiredate);
LOOP
FETCH cur_emp INTO vemp;
EXIT WHEN cur_emp%NOTFOUND;

DBMS_OUTPUT.PUT_LINE(vemp.empno ||‘,‘||vemp.ename||‘,‘||vemp.sal);
END LOOP;
CLOSE cur_emp;
END;

--函数实现
FUNCTION getAvgSal(pdeptno NUMBER) RETURN NUMBER
AS
vavgsal NUMBER(9,2);
BEGIN
SELECT AVG(sal) INTO vavgsal FROM emp WHERE deptno=pdeptno;
RETURN vavgsal;
END;
END;
/


--程序包的调用
EXECUTE pack_test.getEmplByDeptnoAndHiredate(10,to_date(‘1980-01-01‘,‘YYYY-MM-DD‘));
SELECT pack_test.getAvgSal(10) from dual;

程序包的编写和调用实例 --过程--函数的使用

原文:https://www.cnblogs.com/javahua/p/11597562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!