编写一个程序包,包含如下功能:
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