CALL¶
ストアドプロシージャ を呼び出します。
- こちらもご参照ください:
構文¶
CALL <procedure_name> ( [ <arg> , ... ] )
[ INTO :<snowflake_scripting_variable> ]
必須パラメーター¶
procedure_name ( [ arg , ... ] )
プロシージャが呼び出すための識別子(
procedure_name
)と入力引数(arg
)を指定します。
オプションのパラメーター¶
INTO :snowflake_scripting_variable
指定された Snowflakeスクリプト変数 をストアドプロシージャの戻り値に設定します。
使用上の注意¶
プロシージャ名は、必ずしもスキーマ内で一意ではありません。ストアドプロシージャは、引数タイプと名前によって識別および解決されます(つまり、ストアドプロシージャはオーバーロードできます)。
Snowflakeスクリプトのブロック 外では、呼び出しを式の一部にすることはできないため、ストアドプロシージャによって返される値は使用できません。
Snowflakeスクリプトのブロックでは、
INTO :snowflake_scripting_variable
を指定して、ストアドプロシージャからの戻り値をSnowflakeスクリプト変数にキャプチャできます。ストアドプロシージャはアトミックではありません。ストアドプロシージャ内の1つのステートメントが失敗した場合、ストアドプロシージャ内の他のステートメントは必ずしもロールバックされるとは限りません。ストアドプロシージャとトランザクションについては、 トランザクション管理 をご参照ください。
CALL (匿名プロシージャの場合) を使用して匿名プロシージャを作成し、呼び出すこともできます。
例¶
次の例では、 sv_proc1
という名前のストアドプロシージャを呼び出し、文字列リテラルと数値を入力引数として渡します。
CALL sv_proc1('Manitoba', 127.4);
次の例は、ストアドプロシージャへの入力引数として セッション変数 を設定して渡す方法を示しています。
SET Variable1 = 49;
CALL sv_proc2($Variable1);
以下は、Snowflakeスクリプト変数でストアドプロシージャの戻り値をキャプチャするSnowflakeスクリプトのブロックの例です。
DECLARE
ret1 NUMBER;
BEGIN
CALL sv_proc1('Manitoba', 127.4) into :ret1;
RETURN ret1;
END;
注: SnowSQL または Classic Console を使用している場合は、代わりに次の例を使用します(SnowSQL および Classic Console でのSnowflakeスクリプトの使用 を参照)。
EXECUTE IMMEDIATE $$
DECLARE
ret1 NUMBER;
BEGIN
CALL sv_proc1('Manitoba', 127.4) into :ret1;
RETURN ret1;
END;
$$
;
ストアドプロシージャの作成と呼び出しのその他の事例については、 ストアドプロシージャの使用 をご参照ください。