WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

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

データベースに保管されているプロシージャーを呼び出すには、ESQL CALL ステートメントを使用します。 ストアード・プロシージャーは、DATABASE の LANGUAGE 文節およびデータベース内のプロシージャーの名前を識別する EXTERNAL NAME 文節、およびオプションで、 それが属するデータベース・スキーマを持つ CREATE PROCEDURE ステートメントによって定義される必要があります。

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

以下の制約事項がストアード・プロシージャーの使用に対して適用されます。

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

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

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

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

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

  2. 次の例に類似したステートメントをコーディングして、修飾プロシージャーを作成する。
    CREATE PROCEDURE myProc2(IN p1 CHAR) LANGUAGE DATABASE EXTERNAL NAME "Schema1.myProc";
  3. 次の例に類似したステートメントをコーディングして、Oracle パッケージに修飾プロシージャーを作成する。
    CREATE PROCEDURE myProc3(IN p1 CHAR) LANGUAGE DATABASE EXTERNAL 
                     NAME "mySchema.myPackage.myProc";
データベースでのストアード・プロシージャーの定義の例については、CREATE PROCEDURE ステートメントを参照してください。

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

  1. 次の例に類似したステートメントをコーディングして、非修飾プロシージャーを呼び出す。
    CALL myProc1('HelloWorld');

    これはいずれかのスキーマに属するものとして明示的に定義されていないため、myProc1 プロシージャーは、デフォルトのスキーマ (その名前はデータ・ソースへの接続に使用されるユーザー名) 内に存在していなければなりません。そうでない場合、コマンドは失敗します。

  2. 以下の例は、スキーマ Schema1 内の myProc プロシージャーを呼び出します。
    CALL myProc2('HelloWorld');
  3. 次の例に類似したステートメントをコーディングして、動的スキーマを使用した非修飾プロシージャーを呼び出す。
    DECLARE Schema2 char 'mySchema2';
    CALL myProc1('HelloWorld') IN Database.{'Schema2'};

    このステートメントはデフォルトの『username』スキーマをオーバーライドする、データベース Schema2 内の myProc1 プロシージャーを呼び出します。

2 つの結果セットを戻すストアード・プロシージャーの呼び出し

1 つの入力パラメーターを取り、1 つの出力パラメーターと 2 つの結果セットを戻すストアード・プロシージャーを呼び出すには、次のようにします。
  1. 次のようにして、プロシージャーを、1 つの入力パラメーター、1 つの出力パラメーター、2 つの結果セットを指定する CREATE PROCEDURE ステートメントで定義します。
    CREATE PROCEDURE myProc1 (IN P1 INT, OUT P2 INT)
      LANGUAGE DATABASE
      DYNAMIC RESULT SETS 2
      EXTERNAL NAME "myschema.myproc1";
  2. フィールド参照を使用して myProc1 プロシージャーを呼び出すには、以下のようにコーディングします。
    /* using a field reference */
    CALL myProc1(InVar1, OutVar2, Environment.ResultSet1[], 
                OutputRoot.XMLNS.Test.ResultSet2[]);
  3. 参照変数を使用して myProc1 プロシージャーを呼び出すには、以下のようにコーディングします。
    /* using a reference variable*/
    DECLARE cursor REFERENCE TO OutputRoot.XMLNS.Test;
    
    CALL myProc1(InVar1, cursor.OutVar2, cursor.ResultSet1[], 
                         cursor.ResultSet2[]);
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:45:35


タスク・トピックタスク・トピック | バージョン 8.0.0.5 | ac17040_