CLP スクリプトからの PL/SQL プロシージャーおよび関数の作成

コマンド行プロセッサー (CLP) スクリプトから PL/SQL プロシージャーおよび関数を作成できます。

手順

  1. CLP スクリプト・ファイルで PL/SQL プロシージャーまたは関数の定義を作成することができます。 各ステートメントの末尾を改行およびスラッシュ文字 (/) にします。
    その他のステートメント終了文字もサポートされています。
  2. ファイルを保存します。
    この例では、ファイル名は script.db2 です。
  3. CLP からスクリプトを実行します。
    ステートメントの末尾にスラッシュ文字かセミコロンを使用した場合、以下のコマンドを発行します。
    db2 -td/ -vf script.db2
    スクリプト・ファイルで別のステートメント終了文字 (@ 文字など) を使用した場合は、コマンド・ストリング内でその文字を指定する必要があります。 以下に例を示します。
    db2 -td@ -vf script.db2

タスクの結果

構文エラーがない場合は、CLP スクリプトは正常に実行されるはずです。

以下の CLP スクリプトの例では、PL/SQL 関数およびプロシージャーを作成してから、PL/SQL プロシージャーを呼び出します。

CONNECT TO mydb
/

CREATE TABLE emp (
     name            VARCHAR2(10),
     salary          NUMBER,
     comm            NUMBER,
     tot_comp        NUMBER
)
/

INSERT INTO emp VALUES ('Larry', 1000, 50, 0)
/
INSERT INTO emp VALUES ('Curly', 200, 5, 0)
/
INSERT INTO emp VALUES ('Moe', 10000, 1000, 0)
/

CREATE OR REPLACE FUNCTION emp_comp (
     p_sal           NUMBER,
     p_comm          NUMBER )
RETURN NUMBER
IS
BEGIN
    RETURN (p_sal + NVL(p_comm, 0)) * 24;
END emp_comp
/

CREATE OR REPLACE PROCEDURE update_comp(p_name IN VARCHAR) AS
BEGIN
    UPDATE emp SET tot_comp = emp_comp(salary, comm)
      WHERE name = p_name;
END update_comp
/

CALL update_comp('Curly')
/

SELECT * FROM emp
/

CONNECT RESET
/
このスクリプトによって生成される出力例を以下に示します。

CALL update_comp('Curly')

  Return Status = 0

SELECT * FROM emp

NAME       SALARY             COMM               TOT_COMP
---------- ------...--------- ----...----------- --------...-------
Larry                    1000                 50                  0
Curly                     200                  5               4920
Moe                     10000               1000                  0

  3 record(s) selected.

次のタスク

新しいプロシージャーまたは関数を呼び出してテストします。 プロシージャーの場合は、CALL ステートメントを使用します。 関数の場合は、これらの関数への参照を含む照会またはその他の SQL ステートメントを実行します。