在實踐中,您很少創建獨立的存儲函數或過程。
相反,你會使用一個包。
包可以一起組織相關的功能和過程,例如創建庫,但在PL / SQL中,庫被稱為包。
PL / SQL包有兩個部分:
- 包規格
- 包裝體
包規范是包的公共接口。
它列出了任何全局可訪問的常量,光標,函數,過程和變量。
包規范描述了您可以從該庫讀取的內容,而包主體包含實現包規范的包。
創建程序包規范
以下代碼是包規范的示例。
用于創建程序包規范的DDL語法如下:
CREATE [OR REPLACE] PACKAGE <package_name> AS -- one or more: constant, cursor, function, procedure, or variable declarations
END <package_name>;
其中<package_name>是要創建的軟件包的名稱。
以下代碼顯示如何為MY_PACKAGE創建包規范。
create or replace package MY_PACKAGE as FUNCTION to_number_or_null ( aiv_number in varchar2 ) return number;
end MY_PACKAGE;
/
創建包體
代碼進入包體。
包主體是包規范的實現。
它包含在其相應的包規范中聲明的任何函數或過程的代碼。
主體還可以包含應該在不可公開訪問的包體中可訪問的任何常量,光標,函數,過程或變量。
用于創建包主體的DDL語法如下:
CREATE [OR REPLACE] PACKAGE BODY <package_name> AS -- one or more constant, cursor, or variable declarations -- one or more function, or procedure implementations
[BEGIN] -- a PL/SQL block called an initialization section that is -- executed only once per session
[EXCEPTION] -- an exception-handling section for the initialization section
END <package_name>;
其中<package_name>是要創建的包主體的名稱。
要處理初始化部分的異常,請使用關鍵字EXCEPTION添加它。
您的函數和過程的實現是嵌入式函數和過程在PL / SQL塊的聲明部分!
在包主體的聲明部分中聲明的任何常量,游標或變量都可以被該部分中的所有聲明的函數/過程訪問,但不能被其他PL / SQL代碼訪問。
只有您在包規范中聲明的項才能被其他存儲過程訪問。
以下代碼顯示如何創建MY_PACKAGE包主體。
create or replace package body MY_PACKAGE as FUNCTION to_number_or_null ( aiv_number in varchar2 ) return number is begin -- w ww. ja v a 2 s. c o mreturn to_number(aiv_number); exception when OTHERS then return NULL; end to_number_or_null;
end MY_PACKAGE;
/
?CSDN:程序猿 寄語:
1、作為一個真正的程序員,首先應該尊重編程,熱愛你所寫下的程序,他是你的伙伴,而不是工具。
2、程序員可以讓步,卻不可以退縮,可以羞澀,卻不可以軟弱,總之,程序員必須是勇敢的。
3、編程是一種單調的生活,因此程序員比普通人需要更多的關懷,更多的友情。
4、程序不是年輕的專利,但是,他屬于年輕。
5、沒有情調,不懂浪漫,也許這是程序員的一面,但擁有樸實無華的愛是他們的另一面。
6、一個好漢三個幫,程序員同樣如此。