包用于在逻辑上组合过程和函数,它由包规范和包体两个部分组成。
(1)首先用CREATE
PACKAGE创建包规范,只包含过程和函数的说明,但没有过程和函数的实现代码
--创建一个包名称为sp_package
--声明该包含有一个过程update_sal
--声明该包含有一个函数annual_income
CREATE OR REPLACE PACKAGE sp_package IS
PROCEDURE update_sal(spname VARCHAR2, sal
NUMBER);
FUNCTION
annual_income(spNAme VARCHAR2) RETURN NUMBER;
END;
(2)用CREATE PACKAGE BODY命令创建包体,即实现函数和过程的代码
CREATE
OR REPLACE PACKAGE BODY sp_package IS
PROCEDURE
update_sal(spname VARCHAR2, newsal NUMBER) IS
BEGIN
UPDATE emp SET sal = newsal WHERE ename=spname;
END;
FUNCTION annual_income(spName
VARCHAR2)
RETURN NUMBER IS
yearSal number(7,2);
BEGIN
SELECT
(sal+NVL(comm,0))*12 INTO yearSal FROM emp WHERE
ename=spNAme;
RETURN yearSal;
END;
END;
(3)调用包中的过程和函数
CALL
sp_package.annual_income(‘SMITH‘);
CALL sp_package.annual_income(‘SMITH‘) into:income;