CALL ステートメント
CALL ステートメントは、ストアード・プロシージャーを呼び出します。
構文
説明
- label
CALL ステートメントのラベルを指定します。 ラベル名は、ルーチン名や拡張トリガー名と同じにしたり、同じ有効範囲内の別のラベルと同じにすることはできません。 詳細については、 SQL PLのSQLラベルへの参照を参照してください。
- プロシージャー名
- 呼び出すストアード・プロシージャーを指定します。 このプロシージャー名は、 現行サーバーに存在するストアード・プロシージャーを示すものでなければなりません。
- 引数リスト
- ストアード・プロシージャーにパラメーターとして渡す値のリストを指定します。 n 番目の値が、プロシージャー内の n 番目のパラメーターに対応します。 パラメーターの数は、ストアード・プロシージャー用に定義されたパラメーターの数と
同じでなければなりません。 詳細は CALLステートメントを参照してください。
SQL ルーチンの呼び出し規則にしたがって、制御権がその ストアード・プロシージャーに渡されます。 ストアード・プロシージャーの実行が完了すると、 ストアード・プロシージャーの各パラメーターの値は、OUT または INOUT として 定義された、対応する CALL ステートメントのパラメーターに割り当てられます。
- SQL変数名
- ストアード・プロシージャーの引数として SQL 変数を指定します。 SQL 変数への参照に関する説明は、「SQL PL における SQL パラメータと変数への参照」 を参照してください。
- SQLパラメータ名
- ストアード・プロシージャーの引数として SQL パラメーターを指定します。 SQL パラメータへの参照に関する説明は、「SQL PL における SQL パラメータと変数への参照」 を参照してください。
- 式
- このパラメーターは、指定された expression の結果であり、
ストアード・プロシージャーが呼び出される前に評価されます。 expression が
単一の SQL-parameter-name または SQL-variable-name の場合は、
このプロシージャーの対応するパラメーターを IN、INOUT、または OUT として定義
することができます。 それ以外の場合は、プロシージャーの対応するパラメーターは、IN として定義してお
く必要があります。 expression の結果が NULL 値になる可能性がある場合は、
プロシージャーの記述は、NULL パラメーターが許されるものにするか、または
ストアード・プロシージャーの対応するパラメーターを OUT として定義するか、
のいずれかにする必要があります。
対応するパラメーターがそのプロシージャーの CREATE PROCEDURE ステートメント でどのように定義されたかに応じて、以下の追加規則が適用されます。
- IN expression には、複数の SQL パラメーターまたは変数に対する参照を含めることができます。 式の式に記載されている規則に加えて、 式には列名、集計関数、または集計関数に基づくユーザー定義関数を含めることはできません。
- INOUT または OUT expression が許されるのは、単一の SQL パラメーターまた は SQL 変数の場合だけです。
- ヌル
- パラメーターは NULL 値です。 そのプロシージャーに関する対応パラメーターは、IN として定義されている必要があり、さらにプロシージャーの記述は NULL パラメーターに対応できなければなりません。
注
SQL CALL文の詳細については、CALL文を参照してください。
例
ストアード・プロシージャー proc1 を呼び出して、
パラメーターとして SQL 変数を渡します。
CALL proc1(v_empno, v_salary)