- 建立程式包裝的規格部分,指定OR REPLACE可再次建立規格部分,此時不必再次授與該程式包裝的物件權限,也不必再次授與物件權限給己獲此權限的使用者
- 規格部分陳述是可稱為 [程式包裝成員] 的下列物件,這裡聲明的物件也可稱為 [程式包裝物件] 可從程式包裝外部來參照,實際處理內容則紀錄在本體部分
格式
- 預儲程序和預儲函數
- 共享變數和常數
- 例外
CREATE [OR REPLACE] PACKAGE [schema.]package_name
[AUTHID {CURRENT_USER | DEFINER}]
{IS | AS}
package_specification
END [package_name];
schema : 結構名稱
package_name : 程式包裝名稱
package_specification : 程式包裝規格,類型定義,指標/變數/常數/例外的聲明,PL/SQL子程式的規格和PL/SQL內部紀錄的(或者是)java常式的聲明(叫用規格)等
AUTHID : 設定執行程式包裝內之函數和程序的使用者權限,此設定也可適用於程式包裝本體
- AUTHID子句指定值
CURRENT_USER : 以目前執行中的使用者權限來執行程式包裝,建立包裝稱為 [執行者權限程式包裝]DEFINER : 以程式包裝存在的結構使用者權限來執行,建立的程式包裝稱為[定義者 權限程式包裝],沒有指定AUTHID子句時,預設值為AUTHID DEFINER
語法示範
- 說明 : 預儲程式包裝pack_emp的程式包裝規格部分,pack_emp以下列程式包裝構成
- 變數 : last_name
- 函數 : check_emp_sf
- 程序 : update_emp
- 使用者定義例外 : err_empNotFound
create or replace package pack_emp is
--定義變數--
last_name emp.name%type;
--定義函數check_emp_sf--
function check_emp_sf(empno in number) return boolean;
--定義程序update_emp--
procedure update_emp(empno in number,empname in varchar2);
--使用者定義的例外--
err_empNotFound exception;
end pack_emp;
/