定義新的包規格。
語法
CREATE [ OR REPLACE ] PACKAGE name
[ AUTHID { DEFINER | CURRENT_USER } ]
{ IS | AS }
[ declaration; ] [, ...]
[ { PROCEDURE proc_name
[ (argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
[, ...]) ];
[ PRAGMA RESTRICT_REFERENCES(name,
{ RNDS | RNPS | TRUST | WNDS | WNPS } [, ... ] ); ]
|
FUNCTION func_name
[ (argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
[, ...]) ]
RETURN rettype [ DETERMINISTIC ];
[ PRAGMA RESTRICT_REFERENCES(name,
{ RNDS | RNPS | TRUST | WNDS | WNPS } [, ... ] ); ]
}
] [, ...]
END [ name ]
說明
CREATE PACKAGE 定義新的包規格。CREATE OR REPLACE PACKAGE 將創建新的包規格,或者替換現有規格。
如果包括 schema 名稱,則在指定的 schema 中創建包。否則在當前 schema 中創建。在同一個 schema 中,新包的名稱不能與任何現有包匹配,除非其目的是更新現有包的定義,在這種情況下使用 CREATE OR REPLACE PACKAGE。
創建該存儲過程的用戶成為包的所有者。
參數
參數 | 說明 |
---|---|
name | 要創建的包(可能是 schema 限定的)的名稱。 |
DEFINER | CURRENT_USER | 指定在確定是否允許訪問包中引用的數據庫對象時,是使用包所有者 (DEFINER) 的特權還是在包中執行程序的當前用戶 (CURRENT_USER) 的特權。默認值為 DEFINER。 |
declaration | 公共變量、類型、游標或 REF CURSOR 聲明。 |
proc_name | 公共存儲過程的聲明。 |
argname | 參數的名稱。 |
IN | IN OUT | OUT | 參數模式。 |
argtype | 程序的參數的數據類型。 |
DEFAULT value | 輸入參數的默認值。 |
func_name | 公共函數的名稱。 |
rettype | 返回數據類型。 |
DETERMINISTIC | DETERMINISTIC 是 IMMUTABLE 的同義詞。DETERMINISTIC 存儲過程不能修改數據庫,并在提供相同參數值時始終會得到相同結果;它不執行數據庫查找,也不以其他方式使用其參數列表中不直接存在的信息。如果包括此子句,則使用全常量參數對存儲過程的任何調用將立即替換為存儲過程值。 |
RNDS | RNPS | TRUST | WNDS | WNPS | 為了兼容性目的而接受這些關鍵字,但會忽略它們。 |
示例
包規格 empinfo 包含三個公共組件:公共變量、公共存儲過程和公共函數。
CREATE OR REPLACE PACKAGE empinfo
IS
emp_name VARCHAR2(10);
PROCEDURE get_name (
p_empno NUMBER
);
FUNCTION display_counter
RETURN INTEGER;
END;