數據程序設計7 包

打包了相關的PL/SQL類型、子程序到一個容器中。

兩個部分組成:

  • 聲明

注意:

  1. 包本身不能被調用、被參數化或被嵌套
  2. 允許Oracle服務器一次讀多個對象到內存中
  3. 用戶只能訪問程序包的包頭部分,包體被隱藏

可以考慮成一個類,和麪向對象有相通之處。

包的聲明和包體可以放在不同的文件中,方便管理。

包的創建

包聲明

語法:

CREATE [OR REPLACE] PACKAGE
package name
IS| AS
    公共變量、異常、遊標、子程序等聲明
END
package name;

例子:

CREATE OR REPLACE PACKAGE comm package
IS
    g comm    NUMBER := 100 ;
    PROCEDURE reset comm(p comm IN NUMBER) ;
END comn package;

創建包體

CREATE OR REPI ACE PACKAGE BODY
    package_ name
IS
    私有的變量、靜態變量、遊標、異常、類型、子程序、子程序體
END package name;

這裏注意:

  • 在包體中定義的標識符是私有結構,在包的外部不可見
  • 在包體中先定義私有變量和子程序,後定義公共子程序

另外,創建函數和之前的函數是一樣的。

刪除包

語法:

DROP PACKAGE package_name;
DROP PACKAGE BODY package_name;//只刪除包體

開發包的原則

  1. 先定義包聲明,再定義包體
  2. 包聲明中應該只包含公共結構
  3. 改變包的聲明需要重新編譯每個涉及到的子程序
  4. 包體的變化不要求重新編譯包的聲明
  5. 包聲明應該儘可能包含少的內容

 

使用包可以獲得更好的封裝性及模塊性,另外可以提升性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章