PASSTHRU 関数は、式を評価し、その結果の文字ストリングをデータベース・ステートメントとして実行して結果セットを戻します。
PASSTHRU 関数は PASSTHRU ステートメントに似ています。このステートメントについては、PASSTHRU ステートメントで説明されています。
SYNTAXPASSTHRU 関数の主な使用法としては、現在ブローカーでサポートされていない複雑な SELECT をデータベースに対して発行することがあります。(現在ブローカーでサポートされていない複雑な SELECT の例としては、GROUP BY 文節や HAVING 文節を含む SELECT があります。)
最初の式が評価され、その結果の文字ストリングは、(TO 文節中の) DatabaseReference で指されているデータベースに渡されて実行されます。TO 文節を指定しないと、ノードの「データ・ソース」属性によって指されているデータベースが使用されます。
データベース・ストリング中で疑問符 (?) を使用してパラメーターを示します。パラメーター値は VALUES 文節によって提供されます。
VALUES 文節を指定すると、その式が評価され、パラメーターとしてデータベースに渡されます (つまり、この値がデータベース・ステートメント中の疑問符と置換されます)。
VALUE 式が 1 つしかない場合、結果はリストになる場合もならない場合もあります。リストになる場合は、リストのスカラー値が順番に疑問符と置換されます。リストにならない場合は、単一のスカラー値がデータベース・ステートメント中の (単一の) 疑問符と置換されます。複数の VALUE 式がある場合は、どの式もリストに評価されません。それらの式のスカラー値が順番に疑問符と置換されます。
データベース・ステートメントはユーザー・プログラムによって構成されるので、パラメーター・マーカー (つまり疑問符) または VALUES 文節を絶対に使用する必要があるわけではありません。なぜなら、そのプログラムによってデータベース・ステートメント全体をリテラル・ストリングとして提供できるからです。しかし、パラメーター・マーカーを使用すると、さまざまなステートメントを作成してデータベースやブローカーに保管する必要が少なくなるので、使用可能な場合は必ずパラメーター・マーカーを使用してください。
データベース参照は、メッセージ・ツリーの参照に使用される特殊なフィールド参照です。この参照は、"Database" という語と、その後のデータ・ソース名 (つまり、データベース・インスタンスの名前) から成ります。
データ・ソース名は直接指定するか、または式を中括弧 ({...}) で囲んで指定できます。直接指定したデータ・ソース名は、名前置換の対象になります。つまり、使用している名前が既知の名前になるよう宣言されている場合、名前自体ではなく宣言済みの名前の値が使用されます (DECLARE ステートメントを参照)。
PASSTHRU 操作中にエラーが起きる可能性があります。例えば、データベースが操作可能でなくなったり、ステートメントが無効だったりする場合があります。その場合 (ノードの「データベース・エラーで例外をスロー」プロパティーが FALSE に設定されているのでない限り)、例外がスローされます。これらの例外は、該当する SQL コード、状態、ネイティブ・エラー、およびエラー・テキストの値を設定し、エラー・ハンドラーで処理できます (DECLARE HANDLER ステートメントを参照)。
データベース・エラーの処理について詳しくは、データベース状態のキャプチャーを参照してください。
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'));