THROUGH (SQL)
構文
THROUGH [ FOREIGN ] SERVER server-name remote-statement
説明
THROUGH 文は、SQL クエリを外部データ・ソースに送信し、目的の結果セットを返します。クエリを解析、準備、実行するのは、外部データ・ソースのみです。外部データ・ソースに対するクエリの実行時に発生したエラーは、外部テーブルに対してクエリを実行した場合と同じように返されます。
THROUGH 文は、JDBC などの外部データ・ラッパがこの機能をサポートしている外部サーバでのみ使用できます。
THROUGH 文を実行するには、ユーザに外部サーバに対する %Gateway_Object:USE 特権が必要です。InterSystems IRIS では、その他の特権チェックは行いません。ただし、外部サーバ定義で暗黙的に示される特権 (外部データ・ソースへの接続に必要なユーザや認証情報など) によっては、外部データ・ソースでクエリに制限が課される場合があります。このユーザには、外部データ・ソース内で適切な特権を付与してください。
THROUGH 文は、ダイナミック SQL 内で、またはデータベース・ドライバを使用することで使用できます。これは、埋め込み SQL では使用できません。
THROUGH 文に対してクエリ・プランは作成されません。これを EXPLAIN コマンドまたは類似のユーティリティに渡すとエラーが発生します。
引数
server-name
JDBC などのパススルー・クエリをサポートする外部データ・ラッパを使用する既存の外部サーバの名前。このサーバは、外部データ・ソースに対して適切な特権を持つ接続を使用して、目的のデータにアクセスするように構成する必要があります。
remote-statement
区切り文字の引用符を使用せずに渡される SELECT 文。この文は外部データ・ソースにそのまま送信されます。そのため、この文の構文はリモート・サーバの構文ルールに従う必要があり、InterSystems IRIS の SQL では有効な文ではない場合があります。リテラル置換や空白の正規化は行われません。
外部データ・ソースでのこのような構造の構文は大幅に異なる可能性があるため、文に "?" などのパラメータを含めないでください。
例
以下の例では、SELECT クエリを外部データ・ソースに送信します。外部データ・ソースで文を準備して実行します。
THROUGH SERVER MySource.External
SELECT Customers.CustomerID,Customers.FirstName,Order.OrderID,Orders.OrderDate
FROM Customers JOIN Orders ON Customers.CustomerID = Order.CustomerID
WHERE YEAR(Orders.OrderDate) = 2023