包是一组相关过程、函数、变量、常量#SinaEditor_Temp_FontName、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。一个包由两个分开的部分组成:
(1)包package声明或定义:包定义部分是创建包的规范说明,声明包内数据类型、变量、常量、游标等元素。
这部分也是为使用者提供了透明的接口。
(2)包体packpage body:包体是包定义部分的具体实现。
(3)将有联系的对象打成包,方便使用
(4)包中对象包括储存过程,函数,游标,自定义类型和变量,可以在PL_SQL块中应用这些对象.
包的定义
--定义包
create or replace package new_package
as
--定义游标
type c_a is ref cursor;
--定义方法
function new_function
return number;
--定义存储过程
procedure new_procedure;
end;
包的实现
--实现包体
create or replace package body new_package
as
--游标在包的定义中已经声明,在包体中不需要声明
--实现方法
function new_function
return number
as
begin
sys.dbms_output.put_line('function');
return 1;
end;
--实现存储过程
procedure new_procedure
as
begin
sys.dbms_output.put_line('procedure');
end;
end;
包的使用
--使用包体
DECLARE
--定义包中游标
c_b new_package.c_a;
num number;--定义变量来接收方法的返回值
begin
num := NEW_PACKAGE.new_function();
sys.dbms_output.put_line(num);
--调用存储过程
NEW_PACKAGE.NEW_PROCEDURE;
end;