PASSTHRU 関数

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

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

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

使用法

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

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

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

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

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

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

データベース参照

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

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

エラーの処理

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 に割り当て、メッセージ定義に準拠するメッセージ・ツリーを構築できます。

関連概念
ESQL の概要
関連タスク
データベース列からのデータの選択
ESQL の開発
関連資料
PASSTHRU ステートメント
各種 ESQL 関数
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:44:07

ak05890_