CALL

ストアドプロシージャ を呼び出します。

こちらもご参照ください:

CREATE PROCEDURESHOW PROCEDURES

構文

CALL <procedure_name> ( [ <arg> , ... ] )
  [ INTO :<snowflake_scripting_variable> ]
Copy

必須パラメーター

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);
Copy

次の例は、ストアドプロシージャへの入力引数として セッション変数 を設定して渡す方法を示しています。

SET Variable1 = 49;
CALL sv_proc2($Variable1);
Copy

以下は、Snowflakeスクリプト変数でストアドプロシージャの戻り値をキャプチャするSnowflakeスクリプトのブロックの例です。

DECLARE
  ret1 NUMBER;
BEGIN
  CALL sv_proc1('Manitoba', 127.4) into :ret1;
  RETURN ret1;
END;
Copy

注: SnowSQL または Classic Console を使用している場合は、代わりに次の例を使用します(SnowSQL および Classic Console でのSnowflakeスクリプトの使用 を参照)。

EXECUTE IMMEDIATE $$
DECLARE
  ret1 NUMBER;
BEGIN
  CALL sv_proc1('Manitoba', 127.4) into :ret1;
  RETURN ret1;
END;
$$
;
Copy

ストアドプロシージャの作成と呼び出しのその他の事例については、 ストアドプロシージャの使用 をご参照ください。