複製鏈接
請複製以下鏈接發送給好友

程序包

鎖定
表示嵌入或鏈接信息的圖標。此信息可以包含整個文件(如位圖文件)或部分文件(如電子表格中的某個單元)。當選擇此數據包時,用於創建對象的應用程序將播放對象(如聲音文件)或者打開並顯示對象。如果更改原始信息,鏈接的信息將自動更新。但必須手動更新嵌入信息。
中文名
程序包
外文名
package
作    用
將過程和函數安排在邏輯分組中
本    質
命名的聲明部分

程序包內容簡介

可以利用包(package)將過程和函數安排在邏輯分組中。包含有兩個分離的部件;包説明(規範、包頭)和包體(主體)。包説明和包體都存儲在數據字典中。包與過程和函數的一個明顯的區別是,包僅能存儲在非本地的數據庫中。除了允許相關的對象結合為組之外,包與依賴性較強的存儲子程序相比其所受的限制較少。除此之外,包的效率比較高。
從本質上講,包是一個命名的聲明部分。任何可以顯示在塊聲明中的語句都可以在包中使用,這些語句包括過程、函數、遊標、類型和變量。把上述內容放入包中的好處是,用户可以從其他PL/SQL塊中對其進行引用,包為PL/SQL語言提供了全程變量。

程序包創建程序包

包的創建分為包頭的創建和包體的創建兩部分。
(1)包頭。創建包頭的語法格式為:
CREATE OR REPLACE PACKAGE [schema.]package_name /*包頭名稱*/
IS | AS pl/sql_package_spec /*定義過程、函數等*/
其中:
schema:指定將要創建的包所屬用户方案。
Package_name:將要創建的包的名稱。
Pl/sql_package_spec:變量常量數據類型定義;遊標定義;函數、過程定義和參數列表返回類型。
(2)創建包體的語法格式為:
CREATE OR REPLACE PACKAGE BODY[schema.]package_name
IS | AS pl/sql_package_body
其中:
schema:指定將要創建的包所屬用户方案。
Pl/sql_package_body:遊標、函數、過程的具體定義。
包體是一個獨立於包頭的數據字典對象。包體只能在包頭完成編譯 後才能進行編譯。包體中帶有實現包頭中描述的前向子程序的代碼 段。除此之外,包體還可以包括具有包體全局屬性的附加聲明部 分,但這些附加説明對於説明部分是不可見的。

程序包包的應用

程序包調用包

在創建了包説明和相應的包體之後,就可以調用該包的各個組件了。對包內公有組件的調用格式要用到包名並加“.”作為限定詞,即包名.組件名稱。

程序包包的重載

在包的內部,過程和函數可以重載。可以有名稱相同的對象。

程序包刪除包

當不在需要某個程序包時,可以將其刪除。如果只刪除包體,可以使用命令:
DROP PACKAGE BODY package_name;
如果要同時刪除包頭,可以使用命令:
DROP PACKAGE package_name;