包規(guī)格定義包的用戶接口(API)。規(guī)格列出了對包的用戶可見的函數(shù)、過程、類型、 異常和游標。
用于為包定義接口的語法包括:
CREATE [ OR REPLACE ] PACKAGE package_name
[ authorization_clause ]
{ IS | AS }
[ declaration; ] ...
[ procedure_or_function_declaration; ] ...
[ package_name ] ;
其中
authorization_clause :=
{ AUTHID DEFINER } | { AUTHID CURRENT_USER }
其中
procedure_or_function_declaration :=
procedure_declaration | function_declaration
其中
procedure_declaration :=
PROCEDURE proc_name[ argument_list ] [restriction_pragma];
其中
function_declaration :=
FUNCTION func_name [ argument_list ]
RETURN rettype [ restriction_pragma ];
其中
argument_list :=
( argument_declaration [, ...] )
其中
argument_declaration :=
argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
其中
restriction_pragma :=
PRAGMA RESTRICT_REFERENCES(name, restrictions)
其中
restrictions :=
restriction [, ... ]
參數(shù)
參數(shù) | 說明 |
---|---|
package_name | package_name 是分配給包的標識符,每個包必須有一個在 schema 中唯一的名稱。 |
AUTHID DEFINER | 如果您省略 AUTHID 子句或指定 AUTHID DEFINER,則包所有者的特權將用于確定對數(shù)據(jù)庫對象的訪問特權。 |
AUTHID CURRENT_USER | 如果您指定 AUTHID CURRENT_USER,則將使用執(zhí)行包中程序的當前用戶的特權來確定訪問特權。 |
declaration | declaration 是公共變量的標識符。公共變量可以使用語法 package_name.variable 從包的外部訪問。可以有零個、一個或多個公共變量。公共變量定義必須放在過程或函數(shù)聲明之前。
declaration 可以是以下任意內容:
|
proc_name | 公共過程的名稱。 |
argname | 參數(shù)的名稱。參數(shù)在函數(shù)或過程正文中通過此名稱來引用。 |
IN | IN OUT | OUT | 參數(shù)模式。IN 聲明參數(shù)僅用于輸入。這是默認值。IN OUT 允許參數(shù)接收值和返回值。OUT 指定參數(shù)僅用于輸出。 |
argtype | 參數(shù)的數(shù)據(jù)類型。參數(shù)類型可以是基本數(shù)據(jù)類型、使用 %TYPE 的現(xiàn)有列的類型副本,或者是用戶定義的類型,例如嵌套表或對象類型。不能為任何基本類型指定長度,例如,指定
VARCHAR2 而不是 VARCHAR2(10)。
列的類型通過編寫 tablename.columnname%TYPE 來引用,使用此格式有時候能夠幫助存儲過程獨立于表定義的變化。 |
DEFAULT value | 如果調用中未提供輸入?yún)?shù),則 DEFAULT 子句為輸入?yún)?shù)提供默認值。不能為具有模式 IN OUT 或 OUT 的參數(shù)指定 DEFAULT。 |
func_name | 公共函數(shù)的名稱。 |
rettype | 返回數(shù)據(jù)類型。 |
DETERMINISTIC | DETERMINISTIC 是 IMMUTABLE 的同義詞。DETERMINISTIC 函數(shù)不能修改數(shù)據(jù)庫,并在提供相同參數(shù)值時始終得到相同結果;它不執(zhí)行數(shù)據(jù)庫查找,也不以其他方式使用其參數(shù)列表中不直接存在的信息。如果包括此子句,則使用全常量參數(shù)對函數(shù)的任意調用將立即替換為函數(shù)值。 |
restriction | 為了實現(xiàn)兼容性而支持以下關鍵字,但被忽略:
|