プロシージャへのSEMIJOIN
プロシージャへのSEMIJOINは、テーブルへのSemijoinと論理的に同等です。
構文
<table_expression>
[LEFT OUTER | RIGHT OUTER |INNER |FULL OUTER] PROCEDURE JOIN
<procedure> ProcedureAlias
ON <condition_expression>
この構文は、プロシージャ入力の一意の値のセットごとに、右側のプロシージャが1回呼び出されることを示しています。各呼び出しの結果は結合され、結合に供給される行として扱われます。結合は、同じタイプの非プロシージャ結合のように動作します。
備考
•ここに示す特別な構文では、常に右側にプロシージャがあり、プロシージャの入力パラメータはリテラル式でなければならないという通常のルールから逸脱することができます。
•この構文を使用する場合、プロシージャの入力パラメータには、左側のテーブル式から、そのコンテキストからのみ、任意のアイテムへの参照を含めることができます。つまり、左側のサブクエリ内の値のみを使用できます。他のスコープの値は使用できません。
•すべての入力値の組み合わせが追跡され、プロシージャを再度呼び出すために繰り返されることはありません。
•PROCEDUREキーワードの使用に関して:
— PROCEDUREキーワードがないと、プロシージャは1回だけ呼び出されます。
— キーワードを使用すると、結合の左側に応じて、プロシージャが0回以上呼び出されます。
例
(T1 LEFT OUTER JOIN T2 ON T1.x = T2.x)
INNER PROCEDURE JOIN
MyProc(T1.y+T2.y) P1 ON (T1.z = P1.z)