CREATE PACKAGE介紹

語法說明

  • 建立程式包裝的規格部分,指定OR REPLACE可再次建立規格部分,此時不必再次授與該程式包裝的物件權限,也不必再次授與物件權限給己獲此權限的使用者
  • 規格部分陳述是可稱為 [程式包裝成員] 的下列物件,這裡聲明的物件也可稱為 [程式包裝物件] 可從程式包裝外部來參照,實際處理內容則紀錄在本體部分
  1. 預儲程序和預儲函數
  2. 共享變數和常數
  3. 例外
格式
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以下列程式包裝構成
  1. 變數 : last_name
  2. 函數 : check_emp_sf
  3. 程序 : update_emp
  4. 使用者定義例外 : 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;
     /