【PLSQL】package包的使用


************************************************************************
  ****原文:blog.csdn.net/clark_xu 徐長亮的專欄
************************************************************************

package

package是一個能夠將相關對象存儲在一起的PLSQL結構,Package包括兩個分量的組成部分:specification包聲明,body(聲明中的程序實現,包體)。每一個部分都單獨的存儲在數據字典中。包聲明時一個操作的接口,相應用來說是可見的。包體是黑盒,相應用來說隱藏了實現的細節

包的組成包含:

                   過程,函數,變量,游標(定義一條sql語句),類型(定義符合類型),常量,異常

         包的長處:

                   ---方便相應過程和函數的組織,解決命名沖突

                   ---方便對過程和函數的組織:不改變包的聲明定義,改變包的包體;

                   ---限制過程和函數的依賴性

                   ---在包體為實現時候,其它程序能夠釣魚保重的對象,對自己程序進行編譯;

                   ---方便對過程和函數的安全性管理:包的訪問授權僅僅需一次性授權,區分公共過程和私有過程;

                   ---改善性能:在包首次被調用的時候,一個總體所有放入內存,降低多次調用的磁盤IO

                           

                           

        

3.8.1 匿名塊

--過程和函數僅僅能在本匿名塊中調用,比如;

declare

         v_n1 number :=1;

         function fun1 (p_in number ) return number ls

begin       

         return p_in

end;

procedure proc1 ls

begin

         dbms_output.put_lin(fun1(v_n1));

end;

begin

         proc1;

end;

3.8.2 package的語法

包頭聲明:

         create or replace package pkg_name {ls | as }

                   公共變量(varibale)的定義;

             公共類型(type)的定義;

                   公共游標(cursor)的定義;

                   函數說明;

                   過程說明;

         end;

--package body聲明的語法;

         create or replace package body pkg_name

         ls | as

         --調用一次運行一次

         函數實現

         --調用一次運行一次

         過程實現

         begin

                   --初始化代碼

                   --首次調用包中隨意對象運行一次

         end;

3.8.3 Package的使用

包的聲明

create or replace  packeage pkg1

ls

         --公共類型

type t_rec is record

(m1 number,m2 varchar2(10));

--公共變量

v_rec t_rec ;

--公共過程

procedure proc1;

--公共函數

function fun1(p_in number) return number;

end

包體的實現

create or replace  packeage pkg1

ls

         --實現過程

procedure proc1

         ls

         begin       

                   dbms_outpurt.put_lin(v_rec.m1);

         end;

         --實現函數

         function fun1(p_in number) return number

         ls

                   begin

                            return p_in

                   end;

         --初始化代碼

begin

         v_rec.m1 :=100;

         end;

調用package

begin

         pkg1.v_rec.m1 :=pkg1.fun1(10);

         pkg1.proc1;

end;

************************************************************************
  ****原文:blog.csdn.net/clark_xu 徐長亮的專欄
************************************************************************


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM