--创建包的规范/声明
CREATE OR REPLACE PACKAGE pack_me
AS
--声明公共变量
pub_a NUMBER;
--声明过程规范
PROCEDURE find_emp(emp_no NUMBER);
--声明函数规范
FUNCTION getCountByDeptno(pdeptno NUMBER) RETURN NUMBER;
END;
/
---------------------------------------------------------------------------
--创建包的主体
CREATE OR REPLACE PACKAGE BODY pack_me
AS
--声明公共变量
pri_b NUMBER;
--声明过程规范
PROCEDURE find_emp(emp_no NUMBER)
AS
empname VARCHAR2(20);
BEGIN
SELECT ename INTO empname FROM EMP WHERE empno = emp_no;
DBMS_OUTPUT.PUT_LINE('雇员姓名是 '|| empname);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('雇员编号未找到');
END;
--声明函数规范
FUNCTION getCountByDeptno(pdeptno NUMBER) RETURN NUMBER
AS
vcount NUMBER;
BEGIN
SELECT COUNT(*) INTO vcount FROM emp WHERE deptno=pdeptno;
RETURN vcount;
END;
END;
/
-----------------------------------------
类似过程和函数的调用
调用程序包的过程
SQL提示符下
execute pack_me.find_emp(7369); -----这个常用
程序块中调用
pack_me.find_emp(7369);
调用程序包的函数
SQL提示符下
select pack_me.getCountByDeptno(20) from dual; ----这个常用
程序块中调用
DBMS_OUTPUT.PUT_LINE(pack_me.getCountByDeptno(20));