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

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

PASSTHRU 関数

PASSTHRU 関数は、式を評価し、その結果の文字ストリングをデータベース・ステートメントとして実行して結果セットを戻します。

構文

構文図を読む構文図をスキップする
>>-PASSTHRU--(--Expression--+-------------------------------------------------------------+--)-><
                            +-+-----------------------+--+------------------------------+-+      
                            | '-TO--DatabaseReference-'  |            .-,----------.    | |      
                            |                            |            V            |    | |      
                            |                            '-VALUES--(----Expression-+--)-' |      
                            |          .-,----------.                                     |      
                            |  (1)     V            |                                     |      
                            '-------,----Expression-+-------------------------------------'      

WHERE

|--DatabaseReference = --Database--.--DataSourceClause----------|

|--DataSourceClause = --+-DataSourceName-------------+----------|
                        '-{--DataSourceExpression--}-'   

注:
  1. 主要構文図の下半分には、後方互換性のために保存されている構文が説明されています。

PASSTHRU 関数は PASSTHRU ステートメントに似ています。このステートメントについては、PASSTHRU ステートメントで説明されています。

使用法

PASSTHRU 関数の主な使用法としては、現在ブローカーでサポートされていない複雑な SELECT をデータベースに対して発行することがあります。 (現在ブローカーでサポートされていない複雑な SELECT の例としては、GROUP BY 文節や HAVING 文節を含む SELECT があります。)

最初の式が評価され、その結果の文字ストリングは、(TO 文節中の) DatabaseReference で指されているデータベースに渡されて実行されます。 TO 文節を指定しないと、ノードの「データ・ソース」属性によって指されているデータベースが使用されます。

データベース・ストリング中で疑問符 (?) を使用してパラメーターを示します。 パラメーター値は VALUES 文節によって提供されます。

VALUES 文節を指定すると、その式が評価され、パラメーターとしてデータベースに渡されます (つまり、その式の値がデータベース・ステートメント中の疑問符と置換されます)。

VALUE 式が 1 つしかない場合、結果はリストになる場合もならない場合もあります。 リストになる場合は、リストのスカラー値が順番に疑問符と置換されます。 リストにならない場合は、単一のスカラー値がデータベース・ステートメント中の (単一の) 疑問符と置換されます。 複数の VALUE 式がある場合は、 どの式もリストに評価されず、代わりに式のスカラー値が順番に疑問符と置換されます。

データベース・ステートメントはユーザー・プログラムによって構成されるので、 パラメーター・マーカー (つまり疑問符) または VALUES 文節を使用することは重要ではありません。 なぜなら、そのプログラムによってデータベース・ステートメント全体をリテラル・ストリングとして提供できるからです。 しかし、パラメーター・マーカーを使用すると、さまざまなステートメントを作成してデータベースやブローカーに保管する必要が少なくなるので、使用可能な場合は必ずパラメーター・マーカーを使用してください。

データベース参照

データベース参照は、メッセージ・ツリーの参照に使用されるフィールド参照の特殊なインスタンスです。 この参照は、Database という語と、その後のデータ・ソースの名前 (つまり、データベース・インスタンスの名前) から成ります。

データ・ソース名は直接指定するか、または式を中括弧 ({...}) で囲んで指定できます。 直接指定したデータ・ソース名は、名前置換の対象になります。 つまり、使用している名前が既知の名前になるよう宣言されている場合、名前自体ではなく宣言済みの名前の値が使用されます (DECLARE ステートメントを参照)。

以下のノードの 1 つを含むメッセージ・フローが作成されており、このノードと関連している ESQL に PASSTHRU ステートメントとデータベース参照とが含まれている場合、関連ノードのデータ・ソース・プロパティーの値を指定する必要があります。
  • Compute
  • Database
  • Filter

エラーの処理

PASSTHRU 操作中にエラーが起きる可能性があります。 例えば、データベースが操作可能でなくなったり、ステートメントが無効だったりする場合があります。 その場合 (ノードの「データベース・エラーで例外をスロー」プロパティーがクリアされているのでない限り)、 例外がスローされます。 これらの例外は、該当する SQL コード、状態、ネイティブ・エラー、およびエラー・テキストの値を設定し、エラー・ハンドラーで処理できます (DECLARE HANDLER ステートメントを参照)。

データベース・エラーの処理について詳しくは、 データベース状態のキャプチャーを参照してください。

以下の例は、データベース DSN1 にあるスキーマ Schema1 中の表 Table1 に対して SELECT を実行します。2 つのパラメーターを WHERE 文節に渡して、結果セットで名前が昇順に配列されるよう求めます。 結果セットは SelectResult フォルダーに割り当てられます。
SET OutputRoot.XML.Data.SelectResult.Row[] = 
  PASSTHRU('SELECT R.* FROM Schema1.Table1 AS R WHERE R.Name = ? OR R.Name = 
           ? ORDER BY Name'
   TO Database.DSN1
   VALUES ('Name1', 'Name4'));

上記の例では、汎用 XML パーサーが所有する OutputRoot メッセージ本体ツリーに結果セットを割り当てます。このパーサーは自己定義メッセージを処理できます。

MRM パーサーの 1 つが所有するメッセージ・ツリーに結果セットを割り当てる際に、結果セットの構造が MRM メッセージ定義と正確に一致する場合は、その結果セットを直接 OutputRoot メッセージ本体ツリーに割り当てることができます。

結果セットの構造が MRM メッセージ定義と正確に一致しない場合は、最初に結果セットを ROW データ・タイプか、パーサーに関連付けられていない Environment ツリーに割り当てなければなりません。 その後、必要なデータを OutputRoot に割り当て、メッセージ定義に準拠するメッセージ・ツリーを構築できます。

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

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

        
        最終更新:
        
        最終更新: 2015-02-28 17:47:30


参照トピック参照トピック | バージョン 8.0.0.5 | ak05890_