CALL¶
ストアドプロシージャ を呼び出します。
- こちらもご参照ください。
構文¶
CALL <procedure_name> ( [ [ <arg_name> => ] <arg> , ... ] )
[ INTO :<snowflake_scripting_variable> ]
必須パラメーター¶
procedure_name ( [ [ arg_name => ] arg , ... ] )
プロシージャが呼び出すための識別子(
procedure_name
)と入力引数を指定します。名前(
arg_name => arg
)または位置(arg
)のいずれかで入力引数を指定します。次の点に注意してください。
すべての引数を名前または位置のいずれかで指定する必要があります。一部の引数を名前で、他の引数を位置で指定することはできません。
引数を名前で指定する場合は、引数名を二重引用符で囲むことはできません。
2つの関数または2つのプロシージャが同じ名前で引数の型が異なり、引数名が異なる場合は、引数名を使ってどの関数またはプロシージャを実行するかを指定することができます。 プロシージャおよび関数のオーバーロード をご参照ください。
オプションのパラメーター¶
INTO :snowflake_scripting_variable
指定された Snowflakeスクリプト変数 をストアドプロシージャの戻り値に設定します。
例¶
ストアドプロシージャの作成と呼び出しのその他の事例については、 ストアドプロシージャの使用 をご参照ください。
CALL stproc1(5.14::FLOAT);
Each argument to a stored procedure can be a general expression:
CALL stproc1(2 * 5.14::FLOAT);
An argument can be a subquery:
CALL stproc1(SELECT COUNT(*) FROM stproc_test_table1);
You can call only one stored procedure per CALL statement. For example, the following statement fails:
CALL proc1(1), proc2(2); -- Not allowed
Also, you cannot use a stored procedure CALL as part of an expression. For example, all the following statements fail:
CALL proc1(1) + proc1(2); -- Not allowed
CALL proc1(1) + 1; -- Not allowed
CALL proc1(proc2(x)); -- Not allowed
SELECT * FROM (call proc1(1)); -- Not allowed
However, inside a stored procedure, the stored procedure can call another stored procedure, or call itself recursively.
注意
Nested calls can exceed the maximum allowed stack depth, so be careful when nesting calls, especially when using recursion.
次の例では、 sv_proc1
という名前のストアドプロシージャを呼び出し、文字列リテラルと数値を入力引数として渡します。例では、引数を位置で指定します。
CALL sv_proc1('Manitoba', 127.4);
また、引数名で指定することもできます。
CALL sv_proc1(province => 'Manitoba', amount => 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、 execute_stream
または execute_string
メソッドを Python Connector コードで使用している場合は、代わりにこの例を使用してください(SnowSQL、 Classic Console、Python ConnectorでSnowflakeスクリプトを使用する を参照)。
EXECUTE IMMEDIATE $$
DECLARE
ret1 NUMBER;
BEGIN
CALL sv_proc1('Manitoba', 127.4) into :ret1;
RETURN ret1;
END;
$$
;