编译包¶
语法:
参数:
SPECIFICATION、BODY和PACKAGE这三个选项分别用于重新编译包头、重新编译包体和重新编译包头和包体。
说明:
包头和包体可以分别编译,也可以一起编译。如果分别编译,则要先编译包头,后编译包体。编译后,包头和包体作为两部分分开的对象存放在数据库字典中。
注解
ALTER PACKAGE并不能改变包的声明或定义;如要做此改变, 必须使用CREATE OR REPLACE PACKAGE或CREATE OR REPLACE PACKAGE BODY语句。
示例:编译包¶
-- 清理环境
DROP PACKAGE mypack;
CREATE OR REPLACE PACKAGE mypack AS
PROCEDURE proc;
END;
/
CREATE OR REPLACE PACKAGE BODY mypack AS
PROCEDURE proc AS
BEGIN
dbms_output.put_line( 'PROCDURE');
END;
BEGIN
null;
END;
/
EXEC mypack.proc;
--重新编译了包mypack,包括包头和包体
ALTER PACKAGE mypack COMPILE PACKAGE;
--重新编译了包mypack,包括包头
ALTER PACKAGE mypack COMPILE SPECIFICATION;
--重新编译包mypack的包体
ALTER PACKAGE BODY mypack COMPILE BODY;
--删除包
DROP PACKAGE mypack;