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

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

CALL ステートメントを使用するユーザー作成ルーチンの呼び出し

ESQL CALL ステートメントは、さまざまな方法で作成およびインプリメントされたルーチンを呼び出します。

ルーチンとは、以下のステートメントのいずれかにより定義されているユーザー定義の関数またはプロシージャーのことです。
  • CREATE FUNCTION
  • CREATE PROCEDURE
CALL ステートメントを使用して、以下のいずれかの方法でインプリメントされたルーチンを呼び出すことができます。
  • ESQL
  • Java™
  • データベース中のストアード・プロシージャーとして
  • 組み込み (ブローカー提供) 関数として

    CALL を使用して、組み込み (ブローカー提供) 関数やユーザー定義 SQL 関数を呼び出すこともできますが、通常はそれらの名前を式の中で直接使用します。

CALL ステートメントの構文およびパラメーターの詳細については、CALL ステートメントを参照してください。 CALL の使用例については、CREATE PROCEDURE ステートメントの例を参照してください。

ESQL ルーチンの呼び出し

ルーチンの定義に LANGUAGE 文節として ESQL が指定されているか、またはルーチンが組み込み関数の場合は、ルーチンは ESQL メソッドとして呼び出されます。 定義と CALL の間で、データ・タイプと個々のパラメーターの方向が正確な 1 対 1 マッチングになっていることが必要です。 ESQL ルーチンを使用して、List および Row 以外の ESQL データ・タイプを戻せます。

Java ルーチンの呼び出し

ルーチンの定義に LANGUAGE 文節として JAVA が指定されている場合は、ルーチンは Java メソッドとして呼び出されます。 定義と CALL の間で、データ・タイプと個々のパラメーターの方向が正確な 1 対 1 マッチングになっていることが必要です。 Java メソッドの戻りタイプが void の場合は、戻る値が存在しないので、INTO 文節を使用できません。

Java ルーチンは、ESQL から Java へのデータ・タイプ・マッピングの表のデータ・タイプを戻せます (ただし、LIST および ROW は除きます)。

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

ルーチンの定義に LANGUAGE 文節として DATABASE が指定されている場合は、ルーチンはデータベース・ストアード・プロシージャーとして呼び出されます。

データベース・ストアード・プロシージャーが呼び出されると、ブローカーはプロシージャーのローカル名と一致する定義 (CREATE PROCEDURE ステートメントで作成) を検索します。 ブローカーは以下の手順を使用して、データベース内およびそれが属するデータベース・スキーマでプロシージャーを認識するための名前を解決します。

  1. CALL ステートメントが IN 文節を指定する場合、データ・ソースの名前、データベース・スキーマ、またはその両方を IN 文節から取ります。
  2. データ・ソースの名前が CALL ステートメント上の IN 文節で提供されていない場合、それはノードの DATASOURCE 属性から取られます。
  3. データベース・スキーマが CALL ステートメント上の IN 文節では提供されていないものの、CREATE PROCEDURE ステートメントの EXTERNAL NAME 文節上で指定されている場合、それは EXTERNAL NAME 文節から取られます。
  4. データベース・スキーマが CREATE PROCEDURE ステートメントの EXTERNAL NAME 文節上で指定されていない場合、データベースのユーザー名がスキーマ名として使用されます。 一致するプロシージャーが検出されると、ルーチンが呼び出されます。

CALL ステートメントの IN 文節の主な使用法は、それによりデータ・ソース、データベース・スキーマ、またはその両方を実行時に動的に選択できるようにすることです。 EXTERNAL SCHEMA 文節を使用しても、ストアード・プロシージャーを含むデータベース・スキーマを動的に選択できますが、IN 文節ほど柔軟でないので、以前のバージョンとの互換性だけのために保存されています。 新しいアプリケーションでこの文節を使用することは推奨されていません。)

呼び出されるルーチンの定義に DYNAMIC RESULT SETS が指定されている場合、CALL ステートメントの ParameterList 中の式の数は、そのルーチンに対するパラメーターの数と DYNAMIC RESULT SETS の数を加えた数と一致していなければなりません。 例えば、ルーチンに 3 つのパラメーターと 2 つの DYNAMIC RESULT SETS がある場合、CALL ステートメントは呼び出されるルーチンにパラメーターを 5 つ渡さなければなりません。 2 つの DYNAMIC RESULT SETS の場合、渡されるパラメーターは、リスト・パラメーターでなければなりません。つまり、配列大括弧 [ ] で修飾されたフィールド参照 (例えば、Environment.ResultSet1[]) でなければなりません。

データベース・ストアード・プロシージャーを使用して、Interval、List および Row 以外の ESQL データ・タイプを戻せます。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

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


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