ストアード・プロシージャーの呼び出し

データベースに保管されているプロシージャーを呼び出すには、ESQL CALL ステートメントで EXTERNAL 文節を使用します。

どのデータベースでも多重定義プロシージャーがサポートされていないように、SQLServer ではストアード・プロシージャーはサポートされていません。 (多重定義プロシージャーとは、同じデータベース・スキーマ内の別のプロシージャーと同じ名前を持つプロシージャーで、パラメーターの数またはパラメーターのタイプが異なるものです。) プロシージャーが多重定義であることをブローカーが検出すると、例外が生じます。

CALL ステートメントを使用してストアード・プロシージャーを呼び出すと、 ブローカーは、次のように ESQL 定義とデータベース定義を確実に一致させます。

プロシージャーの作成時にスキーマ名に単一のパーセント文字を指定した場合は、 スキーマ名が動的であり、CALL ステートメントで解決されることを表します (下を参照)。

ESQL でのストアード・プロシージャーの作成

データベース・ストアード・プロシージャーに対応する ESQL プロシージャーを定義する場合は、修飾名 (修飾子がデータベース・スキーマである場合) または非修飾名を指定できます。

ストアード・プロシージャーを作成するには、以下のようにします。

  1. 次の例に類似したステートメントをコーディングして、非修飾プロシージャーを作成する。
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "myProc";

    この例の ESQL 定義の名前は、データベース・プロシージャー名と同じになっています。 この名前は同じである必要はありません。 ここで指定するデータベース・プロシージャー名はデータベースに作成した定義と一致していなければなりませんが、対応する ESQL プロシージャーには任意の名前を指定できます。

  2. 次の例に類似したステートメントをコーディングして、修飾プロシージャーを作成する。
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "Schema1.Proc1";

    この例では、ESQL プロシージャー名は、データベース・プロシージャー名と一致していません。

  3. 次の例に類似したステートメントをコーディングして、Oracle パッケージに修飾プロシージャーを作成する。
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "mySchema.myPackage.myProc";
  4. 次の例に類似したステートメントをコーディングして、 スキーマ名が実行時に判別される修飾プロシージャーを作成する。
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "%.myProc";

    この仕様でプロシージャーを作成し、 対応する呼び出しステートメント (下を参照) を使用する場合は、 呼び出しが実行されるときに呼び出されるストアード・プロシージャーを正確に決定できます。

データベースでのストアード・プロシージャーの定義の例については、 CREATE PROCEDURE ステートメントを参照してください。

ストアード・プロシージャーの呼び出し

  1. 次の例に類似したステートメントをコーディングして、非修飾または固定修飾プロシージャーを呼び出す。
    CALL myProc('HelloWorld');
  2. 次の例に類似したステートメントをコーディングして、動的スキーマを使用した修飾プロシージャーを呼び出す。
    CALL myProc('HelloWorld') EXTERNAL SCHEMA 'Schema2';
  3. 次の例に類似したステートメントをコーディングして、入力メッセージ内容から派生する動的スキーマを使用した修飾プロシージャーを呼び出す。
    CALL myProc('HelloWorld') EXTERNAL SCHEMA InputRoot.XML.Test.SchemaName;
CREATE PROCEDURE ステートメントの EXTERNAL NAME 文節に単一のパーセント文字を指定していない場合は、CALL ステートメントの EXTERNAL SCHEMA 名前文節は無視されます (指定されている場合)。

関連概念
メッセージ・フロー
ESQL プロシージャー

関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
メッセージ・フローのエラー処理

関連資料
Compute ノード
Database ノード
Filter ノード
ESQL
CALL ステートメント
CREATE PROCEDURE ステートメント