使用程序包主要是為了實現程序的模塊化,程序包可以將相關的存儲過程,函數,變量,常量和游標等PL/SQL程序組合在一起,通過這種方式可以構供程序人員重用的代碼庫。另外,當首次調用程序包中的存儲過程或函數等元素是,Oracle會將整個程序包調入內存,在下次調用程序包中的元素時,Oracle就可以之際從內存中讀取,從而提程序的運行效率。
程序包主要包括兩個部分:包規范和包體。其中,
包規范用於列出包中可用的存儲過程、函數和游標等元素條目(不含這些元素的實際代碼),這些條目屬於公有項目,可以供所有的數據庫用戶訪問。
包體中則包含了元素的實際代碼,同時,也可以在包體中創建規范中沒有提到的項目,那麼這些項目都屬於私有項目,只能在包體中使用。
創建包規范需要使用CREATE PACKAGE 語句,其簡要語法如下
CREATE [OR REPLACE] PACKAGE package_name
{IS|AS}
package_specification;
END package_name;
- package_name 創建的包名 - package_specification 用於列出用戶可以使用的公共存儲過程、函數、類型和對象
創建包體需要使用CREATE PACKAGE BODY語句,並且在創建時需要指定已創建的包,其簡要語法如下:
CREATE [OR REPLACE] PACKAGE BODY package_name
{IS|AS}
package_body
END package_name;
具體實例如下:
1.創建包規范
CREATE OR REPLACE PACKAGE common_pkg IS
FUNCTION tax(value IN NUMBER) RETURN NUMBER;
END common_pkg;
2.創建包體
CREATE OR REPLACE PACKAGE BODY common_pkg IS
FUNCTION tax(value IN NUMBER) RETURN NUMBER
IS
rate NUMBER:=0.08;
BEGIN
RETURN (value*rate);
END tax;
END common_pkg;
調用包中的函數,
SELECT common_pkg.tax(sal) FROM emp;