Oracle基礎 程式包

來源:互聯網
上載者:User

標籤:

一、程式包

  程式包是一種資料庫物件,它是對相關PLSQL類型、子程式、遊標、異常、變數和常量的封裝。程式包包含兩部分內容:

  1、程式包規範:可以宣告類型、變數、常量、異常、遊標和子程式。

  2、程式包主題:可以實現在程式包規範中定義的遊標、子程式。

 

二、程式包規範

  程式包規範包含一些應用程式課件的公用對象和類型的聲明它是應用程式的借口。規範包含應用程式所需的資源,如果程式包規範只宣告類型、常量、變數和異常,則不需要有程式包主體。只有子程式和遊標才具有程式包主體。

  文法:

  create [or replace] package package_name

  is|as

    [public type and item declations]

    [subprogram specifications]

  end [package_name]

  說明:

  package_name:包的名稱。

  public type and item declations:聲明公用類型、常量、變數、異常和遊標等。

  subprogram specifications:聲明PL/SQL子程式,也就是預存程序和函數。

  在程式包規範中聲明的項也可以再程式包之外使用。這樣的項成為“公用對象”。

  

  例:

--程式包規範的聲明CREATE OR REPLACE PACKAGE PACKAGE_ME IS  PROCEDURE PRO_EMP_SELECT(ENO NUMBER); --聲明一個預存程序:根據員工編號查詢員工資訊  FUNCTION FUN_EMP_SELECT(ENO NUMBER) RETURN NUMBER; --聲明一個函數,根據員工編號查詢員工工資。END PACKAGE_ME;

 

三、程式包主體:

  程式包主題包含了在程式包規範中聲明的每個遊標和子程式的具體實現。私人聲明也可以包含在程式包主體中。程式包主題部分初始化是可選的,它可用於初始化程式包包中的變數。程式包的初始化部分既不能調用程式包,也不能將參數傳遞給程式包,而且,初始化部分僅運行一次。

  create [or replace] package body package_name

  is|as    

    [public type and item declarations]

    [subprogram bodies]

  [begin

    initialization_statements]

  end [package_name]

  說明:

  public type and item declarations:聲明變數、常量、遊標、異常或類型。

  subprogram bodies:定義公用和私人PL/SQL子程式。

  initialization_statements:程式包中規範代碼的實現。

  

  例:對上面所聲明的規範部分的預存程序和函數提供實現。  

--建立程式包主體,提供者包內容的實現,和預存程序、函數的聲明一致CREATE OR REPLACE PACKAGE BODY PACKAGE_ME IS  PROCEDURE PRO_EMP_SELECT(ENO NUMBER) AS    V_NAME EMP.ENAME%TYPE;    V_SAL  EMP.SAL%TYPE;  BEGIN    SELECT ENAME, SAL INTO V_NAME, V_SAL FROM EMP WHERE EMPNO = ENO;    DBMS_OUTPUT.PUT_LINE(‘name:‘ || V_NAME || ‘   sal:‘ || V_SAL);  END PRO_EMP_SELECT;  FUNCTION FUN_EMP_SELECT(ENO NUMBER) RETURN NUMBER AS    V_SAL EMP.SAL%TYPE;  BEGIN    SELECT SAL INTO V_SAL FROM EMP WHERE EMPNO = ENO;    RETURN V_SAL;  END FUN_EMP_SELECT;END PACKAGE_ME;

 

四、調用程式包  

DECLARE  v_sal emp.sal%TYPE;BEGIN    package_me.PRO_EMP_SELECT(7788);                --調用方式和調用預存程序方式一樣,不過需要在預存程序前添加程式包名    v_sal := package_me.FUN_EMP_SELECT(7788);       --調用方式和調用函數方式一樣,不過需要在函數前添加程式包名    dbms_output.put_line(v_sal);END;

 

Oracle基礎 程式包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.