【PLSQL】package包的使用,plsqlpackage包

來源:互聯網
上載者:User

【PLSQL】package包的使用,plsqlpackage包
************************************************************************  ****原文:blog.csdn.net/clark_xu 徐長亮的專欄************************************************************************包package

package是一個可以將相關Object Storage Service在一起的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 徐長亮的專欄************************************************************************

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.