定義新的包規格。

語法

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;