建立及管理套裝程式

您可以建立及管理 PL/SQL 套裝程式。

另請參閱:教學課程:在子程式中宣告變數與常數」,其中顯示如何變更套裝程式主體

關於套裝程式結構

套件一律具有規格,且通常具有主體。規格定義套件本身,且為應用程式程式介面 (API)。主體會定義宣告之游標的查詢,以及在套裝程式規格中宣告之子程式的程式碼。

套件規格定義套件,宣告可從套件外部參考的類型、變數、常數、例外、宣告游標與子程式。套裝程式規格是應用程式程式介面 (API) :它具有從屬端程式需要呼叫其子程式的所有資訊,但沒有其實行的相關資訊。

套裝程式主體定義宣告之游標的查詢,以及在套裝程式規格中宣告之子程式的程式碼 (因此,沒有宣告之游標或子程式的套件不需要主體)。套件主體也可定義本機子方案,此子方案並未在規格中宣告,且只能由套件中的其他子方案呼叫。套裝程式主體內容在從屬端程式上是隱藏的。您可以變更套裝程式主體,而且不會讓呼叫套裝程式的應用程式失效。

另請參閱:

教學課程:建立套裝程式規格

本教學課程顯示如何使用「建立套件」工具來建立名為 EMP_EVAL 之套件的規格,此套件出現在本文件的許多教學課程與範例中。

若要建立套件規格,請使用 SQL Developer 工具「建立套件」或 DDL 陳述式 CREATE PACKAGE。

使用「建立套裝程式」工具建立套裝程式規格的步驟:

  1. 在「連線」框架中,展開 hr_conn

  2. 在綱要物件類型清單中,在套裝程式上按一下滑鼠右鍵。

  3. 在選項清單中,按一下新套裝程式

    即會開啟「建立套件」視窗。「綱要」欄位的值為 HR,「名稱」欄位的預設值為 PACKAGE1,而取消選取「將新來源加入小寫」核取方塊。

  4. 若為「綱要」,請接受預設值 HR。

  5. 對於「名稱」,將值 PACKAGE1 變更為 EMP_EVAL

  6. 按一下「確定」。

    EMP_EVAL 窗格會開啟,顯示建立套裝程式的 CREATE PACKAGE 敘述句:

     CREATE OR REPLACE PACKAGE emp_eval AS
    
     /* TODO enter package declarations (types, exceptions, methods etc) here */
    
     END emp_eval;
    

    窗格的標題為斜體字型,表示包裝未儲存到資料庫。

  7. (選擇性) 在 CREATE PACKAGE 敘述句中,將註解取代為宣告。

    如果您現在沒有執行這個步驟,可以稍後執行,如「教學課程:變更套件規格」中的步驟。

  8. 從「檔案」功能表中選取儲存

    在 Oracle 資料庫編譯套裝程式並儲存它之後,EMP_EVAL 窗格的標題已不再是斜體字型。

另請參閱:Oracle Database PL/SQL Language Reference,瞭解 CREATE PACKAGE 敘述句 (針對套裝程式設定) 的相關資訊

教學課程:變更套裝程式規格

本自學課程展示如何使用「編輯」工具變更 EMP_EVAL 套件的規格,該套件出現在本文件的許多自學課程與範例中。特別是,教學課程會示範如何新增程序 EVAL_DEPARTMENT 與函數 CALCULATE_SCORE 的宣告。

若要變更套件規格,請使用 SQL Developer 工具「編輯」或 DDL 陳述式 CREATE PACKAGE 與 OR REPLACE 子句。

使用「編輯」工具變更 EMP_EVAL 套件規格的步驟:

  1. 在「連線」框架中,展開 hr_conn

  2. 在綱要物件類型清單中,展開套裝程式

  3. 在套裝軟體清單中,以滑鼠右鍵按一下 EMP_EVAL

  4. 在選項清單中,按一下編輯

    EMP_EVAL 窗格會開啟,顯示建立套裝程式的 CREATE PACKAGE 敘述句:

     CREATE OR REPLACE PACKAGE emp_eval AS
    
     /* TODO enter package declarations (types, exceptions, methods etc) here */
    
     END emp_eval;
    

    窗格標題不是以斜體字型顯示,表示套件已儲存在資料庫中。

  5. 在 EMP_EVAL 窗格中,將備註取代為此代碼:

     PROCEDURE eval_department ( dept_id IN NUMBER );
    
     FUNCTION calculate_score ( evaluation_id IN NUMBER
                             , performance_id IN NUMBER)
                             RETURN NUMBER;
    

    EMP_EVAL 窗格的標題會變更為斜體字型,表示變更尚未儲存至資料庫。

  6. 按一下編譯圖示。

    變更過的套裝程式規格便會進行編譯並儲存到資料庫。EMP_EVAL 窗格的標題已不再是斜體字型。

另請參閱:Oracle Database PL/SQL Language Reference,瞭解含有 OR REPLACE 子句的 CREATE PACKAGE 敘述句相關資訊

教學課程:建立套裝程式主體

本自學課程將說明如何使用「建立本文」工具建立 EMP_EVAL 套件的主體,此套件出現在本文件的許多範例與教學課程中。

若要建立套裝程式主體,請使用 SQL Developer 工具「建立主體」或 DDL 敘述句「建立套裝程式主體」。

使用「建立本文」工具為套件 EMP_EVAL 建立本文的步驟:

  1. 在「連線」框架中,展開 hr_conn

  2. 在綱要物件類型清單中,展開套裝程式

  3. 在套裝軟體清單中,以滑鼠右鍵按一下 EMP_EVAL

  4. 在選項清單中,按一下建立主體

    EMP_EVAL Body 窗格出現,顯示自動為套裝程式主體產生的程式碼:

     CREATE OR REPLACE
     PACKAGE BODY EMP_EVAL AS
    
     PROCEDURE eval_department(dept_id IN NUMBER) AS
     BEGIN
    
         -- TODO implementation required for PROCEDURE EMP_EVAL.eval_department
         NULL;
     END eval_department;
    
     FUNCTION calculate_score ( evaluation_id IN NUMBER
                             , performance_id IN NUMBER)
                             RETURN NUMBER AS
     BEGIN
    
         -- TODO implementation required for FUNCTION EMP_EVAL.calculate_score
         RETURN NULL;
     END calculate_score;
    
     END EMP_EVAL;
    

    窗格的標題為斜體字型,表示該代碼並未儲存在資料庫中。

  5. (選擇性) 在 CREATE PACKAGE BODY 敘述句:

    • 用可執行敘述句取代註解。

    • (選擇性) 在程序的可執行部份中,刪除 NULL 或將其取代為可執行敘述句。

    • (選擇性) 在函數的可執行部分中,將 NULL 取代為另一個表示式。

    如果現在沒有完成此步驟,您可以稍後再執行,如「教學課程:在子程式中宣告變數與常數」中的步驟。

  6. 按一下編譯圖示。

    變更過的套裝程式主體會進行編譯並儲存到資料庫。EMP_EVAL 主體窗格的標題已不再是斜體字。

另請參閱:Oracle Database PL/SQL Language Reference,瞭解 CREATE PACKAGE BODY 敘述句 (套裝程式主體) 的相關資訊

刪除套裝程式

若要刪除套裝程式 (包括規格和主體),請使用「SQL Developer 連線」框架和「刪除」工具,或 DDL 敘述句 DROP PACKAGE。

注意:請勿刪除套裝程式 EMP_EVAL —您稍後需要它來教學課程。如果您想要練習刪除套裝程式,請建立簡單的內容,然後將它們刪除。

使用「刪除」工具刪除套裝程式的步驟:

  1. 在「連線」框架中,展開 hr_conn

  2. 在綱要物件類型清單中,展開套裝程式

    將會顯示套裝程式清單。

  3. 在套件清單中,以滑鼠右鍵按一下要刪除的套件名稱。

  4. 在選項清單中,按一下刪除套件

  5. 在「刪除」視窗中,按一下套用

  6. 在「確認」視窗中,按一下確定

另請參閱:Oracle Database PL/SQL Language Reference,瞭解 DROP PACKAGE 敘述句的相關資訊