pl/sql 中的 包

来源:互联网 发布:不吃清真食品 知乎 编辑:程序博客网 时间:2024/06/14 01:04
包:PL/SQL中将相关的对象存储到一起的一种机构形式 
    相关对象:变量,游标,异常,存储过程,函数

     组成:包头(包规范):包含相关信息的声明,不含有任何子程序和代码
           包体:主要的代码和函数等(先编译包头) 
案例一:
   create package pack1
   is 
      procedure  procadd(x number,y number);
      procedure  procsub(x number,y number);
    end pack1;  
 包体:
   create package body pack1
   is 
      procedure  procadd(x number,y number);
      is 
      begin 
          dbms_output.put_line(x+y);
      end;
      procedure  procsub(x number,y number);
      is 
      begin
            dbms_output.put_line(x+y);
      end;
    end pack1;  

包头 
CREATE [OR REPLACE] PACKAGE package_name
AS|IS
    variable declare;
    cursor declare;
    procedure declare;
    function declare;
    .....
END  [package_name];

包体  
    包含函数和过程的代码
    包头成功通过编译后,才可以进行编译
    可以包含私有函数和过程
    允许函数和过程的重载 

CREATE [OR REPLACE] PACKAGE BODY package_name
AS|IS
     global variables;
    procedure ;
    function ;
    .....
BEGIN 
    initialize statement;
END  [package_name];

案例:
create package jisuan
is 
   funtion 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: 用户存储在数据库中程序和包的源代码

0 0