Oracleでは、最初にパッケージ仕様でプロシージャを宣言してから、パッケージ本体で完全なプロシージャを作成する必要があります。パッケージ仕様で宣言せずにパッケージ本体でのみプロシージャを作成しようとすると、エラーPLS-00302コンポーネントを宣言する必要があり、ORA-06550が無効なPL/SQLブロックになるためです。以下に、Oracleのパッケージ内にプロシージャを作成する方法の例を示します。
この例では、EMPテーブルの手数料を更新するためのプロシージャupdate_commを作成します。この手順では、手数料率のパラメーターを使用します。
Oracleの例でパッケージ内にプロシージャを作成する
パッケージ仕様で手順を宣言する
CREATE OR REPLACE PACKAGE emp_pkg IS PROCEDURE update_comm (i_comm IN emp.comm%TYPE); END emp_pkg;
パッケージ本体に完全なプロシージャを作成する
CREATE OR REPLACE PACKAGE BODY emp_pkg IS PROCEDURE update_comm (i_comm IN emp.comm%TYPE) IS BEGIN UPDATE emp SET comm = sal * NVL (i_comm, 0) / 100; COMMIT; END update_comm; END emp_pkg;
これで、この手順を次のように実行できます。
BEGIN /* Updating commission with 5% of salary */ emp_pkg.update_comm (5); END;