oracle存儲過程學習---包的概念


轉自:http://www.iteye.com/topic/1111793

一、包的概念
   類似於一個容器,能打包相應的Pl/SQL變量、常量、函數、過程、復合數據類型等元素到這個容器內。用來限制
   對這些內容的訪問權限。
二、包的構成。
   包通常由兩部分組成,分別為包頭和包體 。
   包頭:里面通常寫上述元素的聲明,相當於應用程序的接口。
   包體:里面通常寫上述元素的實現,相當於應用程序的具體實現。 
   包頭和包體分別作為數據庫對象被保存在數據庫內。
三、包的特性
  1、包本身不能被調用,被參數化,只能調用包中的具體元素。
  2、當第一次調用一個包中的元素時,整個包被載入內存,下一次再調用包中的相應元素時,省略了磁盤操作。
  3、用戶只能訪問包頭,而不能訪問包體。
  4、包頭可以在沒有包體的情況下單獨存在,而包體不可以。
四、公有元素、私有元素和局部元素。  
   公有元素:只要在包頭中聲明的元素,即為公有元素,在包的外部都可以訪問得到。
   私有元素:在包體中出現而包頭中沒有出現的元素,即為私有元素,在包的外部訪問不到。
   局部元素:在包體的某一個過程或者函數中聲明的元素,即為局部元素,只能在包體的這個過程和函數中使用。
五、如何編輯一個包。
  1、new Sql-window
  2、new program-window ->Package
  3、new command-window
六、創建包的語法
  1、創建包頭:
   Create Or Replace Package 包名 is|As 
           公有元素的聲明;
    pl/sql塊
  2、創建包體:
    Create Or Replace Package Body 包名 is|As 
           私有元素的聲明
           公有元素的實現;
     pl/sql塊
七、包的調用
    和以前調用方式的區別是:在調用的元素名前面加上  '包名.'   
八、包的特性:
  1、無體包:只有包頭沒有包體的包。通常只寫常量的聲明。   
  2、包的重載特性:在同一個包里,函數或過程名相同,參數列表不同。
  3、包的前向聲明:
九、刪除包
  刪除包頭:
  Drop Package 包名;--包頭和包體都被刪除
  刪除包體
  Drop Package Body 包名; --只刪除包體。
  當修改包頭時,包頭和包體需要全部重新編譯,如果只修改包體,包頭不需要重新編譯。   
十、動態SQL:在運行期間才能明確下來操作的是哪個數據庫對象.
    靜態SQL:在編譯之前就已經明確操作的是哪個數據庫對象。
十一、本地動態SQL:
    Execute Immediate '動態SQL' [Into 變量列表] [Using 參數列表];
    變量列表:用來做Select語句賦值的。、
    參數列表:用來填充SQL中參數的。


免責聲明!

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



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