建立及管理套裝程式
您可以建立及管理 PL/SQL 套裝程式。
另請參閱:「教學課程:在子程式中宣告變數與常數」,其中顯示如何變更套裝程式主體
關於套裝程式結構
套件一律具有規格,且通常具有主體。規格定義套件本身,且為應用程式程式介面 (API)。主體會定義宣告之游標的查詢,以及在套裝程式規格中宣告之子程式的程式碼。
套件規格定義套件,宣告可從套件外部參考的類型、變數、常數、例外、宣告游標與子程式。套裝程式規格是應用程式程式介面 (API) :它具有從屬端程式需要呼叫其子程式的所有資訊,但沒有其實行的相關資訊。
套裝程式主體定義宣告之游標的查詢,以及在套裝程式規格中宣告之子程式的程式碼 (因此,沒有宣告之游標或子程式的套件不需要主體)。套件主體也可定義本機子方案,此子方案並未在規格中宣告,且只能由套件中的其他子方案呼叫。套裝程式主體內容在從屬端程式上是隱藏的。您可以變更套裝程式主體,而且不會讓呼叫套裝程式的應用程式失效。
另請參閱:
-
Oracle Database PL/SQL Language Reference,瞭解套裝程式規格的詳細資訊
-
Oracle Database PL/SQL Language Reference,瞭解套裝程式主體的詳細資訊
教學課程:建立套裝程式規格
本教學課程顯示如何使用「建立套件」工具來建立名為 EMP_EVAL 之套件的規格,此套件出現在本文件的許多教學課程與範例中。
若要建立套件規格,請使用 SQL Developer 工具「建立套件」或 DDL 陳述式 CREATE PACKAGE。
使用「建立套裝程式」工具建立套裝程式規格的步驟:
-
在「連線」框架中,展開 hr_conn 。
-
在綱要物件類型清單中,在套裝程式上按一下滑鼠右鍵。
-
在選項清單中,按一下新套裝程式。
即會開啟「建立套件」視窗。「綱要」欄位的值為 HR,「名稱」欄位的預設值為 PACKAGE1,而取消選取「將新來源加入小寫」核取方塊。
-
若為「綱要」,請接受預設值 HR。
-
對於「名稱」,將值 PACKAGE1 變更為
EMP_EVAL。 -
按一下「確定」。
EMP_EVAL 窗格會開啟,顯示建立套裝程式的 CREATE PACKAGE 敘述句:
CREATE OR REPLACE PACKAGE emp_eval AS /* TODO enter package declarations (types, exceptions, methods etc) here */ END emp_eval;窗格的標題為斜體字型,表示包裝未儲存到資料庫。
-
(選擇性) 在 CREATE PACKAGE 敘述句中,將註解取代為宣告。
如果您現在沒有執行這個步驟,可以稍後執行,如「教學課程:變更套件規格」中的步驟。
-
從「檔案」功能表中選取儲存。
在 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 套件規格的步驟:
-
在「連線」框架中,展開 hr_conn 。
-
在綱要物件類型清單中,展開套裝程式。
-
在套裝軟體清單中,以滑鼠右鍵按一下 EMP_EVAL 。
-
在選項清單中,按一下編輯。
EMP_EVAL 窗格會開啟,顯示建立套裝程式的 CREATE PACKAGE 敘述句:
CREATE OR REPLACE PACKAGE emp_eval AS /* TODO enter package declarations (types, exceptions, methods etc) here */ END emp_eval;窗格標題不是以斜體字型顯示,表示套件已儲存在資料庫中。
-
在 EMP_EVAL 窗格中,將備註取代為此代碼:
PROCEDURE eval_department ( dept_id IN NUMBER ); FUNCTION calculate_score ( evaluation_id IN NUMBER , performance_id IN NUMBER) RETURN NUMBER;EMP_EVAL 窗格的標題會變更為斜體字型,表示變更尚未儲存至資料庫。
-
按一下編譯圖示。
變更過的套裝程式規格便會進行編譯並儲存到資料庫。EMP_EVAL 窗格的標題已不再是斜體字型。
另請參閱:Oracle Database PL/SQL Language Reference,瞭解含有 OR REPLACE 子句的 CREATE PACKAGE 敘述句相關資訊
教學課程:建立套裝程式主體
本自學課程將說明如何使用「建立本文」工具建立 EMP_EVAL 套件的主體,此套件出現在本文件的許多範例與教學課程中。
若要建立套裝程式主體,請使用 SQL Developer 工具「建立主體」或 DDL 敘述句「建立套裝程式主體」。
使用「建立本文」工具為套件 EMP_EVAL 建立本文的步驟:
-
在「連線」框架中,展開 hr_conn 。
-
在綱要物件類型清單中,展開套裝程式。
-
在套裝軟體清單中,以滑鼠右鍵按一下 EMP_EVAL 。
-
在選項清單中,按一下建立主體。
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;窗格的標題為斜體字型,表示該代碼並未儲存在資料庫中。
-
(選擇性) 在 CREATE PACKAGE BODY 敘述句:
-
用可執行敘述句取代註解。
-
(選擇性) 在程序的可執行部份中,刪除 NULL 或將其取代為可執行敘述句。
-
(選擇性) 在函數的可執行部分中,將 NULL 取代為另一個表示式。
如果現在沒有完成此步驟,您可以稍後再執行,如「教學課程:在子程式中宣告變數與常數」中的步驟。
-
-
按一下編譯圖示。
變更過的套裝程式主體會進行編譯並儲存到資料庫。EMP_EVAL 主體窗格的標題已不再是斜體字。
另請參閱:Oracle Database PL/SQL Language Reference,瞭解 CREATE PACKAGE BODY 敘述句 (套裝程式主體) 的相關資訊
刪除套裝程式
若要刪除套裝程式 (包括規格和主體),請使用「SQL Developer 連線」框架和「刪除」工具,或 DDL 敘述句 DROP PACKAGE。
注意:請勿刪除套裝程式 EMP_EVAL —您稍後需要它來教學課程。如果您想要練習刪除套裝程式,請建立簡單的內容,然後將它們刪除。
使用「刪除」工具刪除套裝程式的步驟:
-
在「連線」框架中,展開 hr_conn 。
-
在綱要物件類型清單中,展開套裝程式。
將會顯示套裝程式清單。
-
在套件清單中,以滑鼠右鍵按一下要刪除的套件名稱。
-
在選項清單中,按一下刪除套件。
-
在「刪除」視窗中,按一下套用。
-
在「確認」視窗中,按一下確定。
另請參閱:Oracle Database PL/SQL Language Reference,瞭解 DROP PACKAGE 敘述句的相關資訊