包:
PL/SQL中将相关的对象存储到一起的一种机构形式
包体
相关对象:变量,游标,异常,存储过程,函数
组成:包头(包规范):包含相关信息的声明,不含有任何子程序和代码
包体:主要的代码和函数等(先编译包头)
包头案例一:
create package pack1isprocedure procadd(x number,y number);procedure procsub(x number,y number);end pack1;包体:create package body pack1isprocedure procadd(x number,y number);isbegindbms_output.put_line(x+y);end;procedure procsub(x number,y number);isbegindbms_output.put_line(x+y);end;end pack1;
CREATE [OR REPLACE] PACKAGE package_name
AS|ISvariable declare;cursor declare;procedure declare;function declare;.....END [package_name];
包含函数和过程的代码
包头成功通过编译后,才可以进行编译
可以包含私有函数和过程
允许函数和过程的重载
CREATE [OR REPLACE] PACKAGE BODY package_name
AS|ISglobal variables;procedure ;function ;.....BEGINinitialize statement;END [package_name];
案例:
create package jisuanisfuntion funcadd(x number,y number) return number;funtion funcsub(x number,y number) return number;end;
create package body jisuan
is
funtion funcadd(x number,y number) return number
is
result number :=0;
begin
result :=x+y;
return result;
end;
funtion funcsub(x number,y number) return number
is
result number :=0;
begin
result :=x-y;
return result;
end;
end;
包的相关数据字典
user_objects:用户拥有的全部数据库对象
user_source: 用户存储在数据库中程序和包的源代码