3.6.4.6. 手順リレーショナルデータベースコマンド
手順のリレーショナルデータベースでは、SELECT の構文を使用して EXEC をエミュレートします。手順関連付けられたコマンドでは、手順グループ名がテーブルの代わりに FROM 句で使用されます。この手順に対して、必要な入力値がすべて条件にある場合に、通常のテーブルアクセスの代わりに、この手順が実行されます。条件にある入力値の組み合わせはそれぞれ、手順が実行されます。
構文の例
select * from proc
select * from proc
select output_param1, output_param2 from proc where input_param1 = 'x'
select output_param1, output_param2 from proc where input_param1 = 'x'
select output_param1, output_param2 from proc, table where input_param1 = table.col1 and input_param2 = table.col2
select output_param1, output_param2 from proc, table where input_param1 = table.col1 and input_param2 = table.col2
構文ルール
テーブルプロジェクトとして、入力パラメーターを追加して EXEC と同じ列である手順。結果セットが返されない手順の場合、IN_OUT 列は 2 つの列として展開されます。
- 出力値を表す 1 つ。
- パラメーターの入力を表す {column name}_IN という名前のもの。
-
入力値は、基準を介して渡されます。値は
=
か、null または
述語で
渡すことができます。Disjuncts は使用できません。また、等価述語を介して非機密列の値を渡すこともできます。 - 手順ビューでは、IN パラメーターおよび IN_OUT パラメーターにアクセスパターンが自動的に付けられます。アクセスパターンを使用すると、必要に応じて手順ビューを依存結合として正しく計画したり、十分な基準が見つからない場合は失敗します。
- パラメーター(IN、IN_OUT、OUT、RETURN)と結果セットのコラムの間に重複する名前が含まれる手順は、proceduralational コマンドで使用できません。
- 手順と同じ名前のテーブルまたはビューがすでにある場合は、手順のリレーショナルデータベース構文を使用して呼び出すことはできません。
- 指定の入力に基準がない場合に IN または IN_OUT パラメーターのデフォルト値は使用されません。デフォルト値は、名前付き手順の構文にのみ有効です。詳細は、「 EXECUTE 」を参照してください。
上記の問題は、ネストされたテーブル参照を使用する場合に適用されません。詳細は、「 Nested table reference in FROM clause 」を参照してください。
複数の実行
in
または join の条件を使用すると、手順が複数回実行されます。