ストアドプロシージャの呼び出し¶
ストアドプロシージャを呼び出すには、いくつかの方法があります。
プロシージャを呼び出すツール¶
プロシージャを呼び出すツールを選択します。
言語 |
アプローチ |
|---|---|
SQL Snowsight などで SQL コマンドを実行。 |
|
Snowparkを使用したJava、Python、またはScala サポートされている言語でローカルにコードを記述し、Snowflakeで実行させます。 |
Snowpark APIs を使用するクライアントコードを以下のいずれかの言語で実行します。 |
コマンドライン コマンドラインからコマンドを実行して、Snowflakeエンティティを作成および管理します。 |
Snowflake CLI のコマンドを実行します。 |
Python クライアント上で、Snowflakeの管理操作を実行するコードを記述します。 |
Snowflake Python API を使用するコードを実行します。 |
RESTful APIs (言語にとらわれない) RESTful エンドポイントにリクエストを行い、Snowflake エンティティを作成および管理します。 |
Snowflake REST API を使用したプロシージャの作成をリクエストします。 |
ストアドプロシージャを呼び出す権限を取得すると、 CALL ステートメントを使用してストアドプロシージャを呼び出すことができます。
注釈
匿名プロシージャの作成と呼び出しの両方を実行するには、 CALL (匿名プロシージャでの場合) を使用します。匿名プロシージャの作成と呼び出しには、 CREATE PROCEDURE スキーマ権限を持つロールは必要ありません。
使用上の注意¶
プロシージャ名はスキーマ内で必ずしも一意ではありません。ストアドプロシージャは、名前だけでなく引数のタイプによっても識別され、解決されます(つまり、ストアドプロシージャはオーバーロードすることができます)。
Snowflakeスクリプトのブロック 外では、呼び出しを式の一部にすることはできないため、ストアドプロシージャによって返される値は使用できません。
Snowflakeスクリプトのブロックでは、
INTO :snowflake_scripting_variableを指定して、ストアドプロシージャからの戻り値をSnowflakeスクリプト変数にキャプチャできます。ストアドプロシージャはアトミックではありません。ストアドプロシージャ内の1つのステートメントが失敗した場合、ストアドプロシージャ内の他のステートメントは必ずしもロールバックされるとは限りません。ストアドプロシージャとトランザクションについては、 トランザクション管理 をご参照ください。
CALL (匿名プロシージャでの場合) を使用して匿名プロシージャを作成し、呼び出すこともできます。
SQL でストアドプロシージャを呼び出します。¶
ストアドプロシージャに引数がある場合は、それらの引数を名前または位置で指定できます。
たとえば、次のストアドプロシージャは、3つの引数を受け付けます。
プロシージャの呼び出し時に、引数を名前で指定できます。
引数を名前で指定する場合は、引数を特定の順序で指定する必要はありません。
また、引数を位置で指定することもできます。
注釈
すべての引数を名前または位置のいずれかで指定する必要があります。一部の引数を名前で、他の引数を位置で指定することはできません。
When you specify an argument by name, you can't use double quotes around the argument name.
If two procedures have the same name but different argument types, you can use the argument names to specify which procedure to execute, if the argument names are different. For more information, see プロシージャおよび関数のオーバーロード.
オプションの引数の指定¶
ストアドプロシージャに オプションの引数 がある場合は、呼び出しの際にオプションの引数を省略できます。オプションの引数それぞれには、引数が省略された場合に使用されるデフォルト値があります。
たとえば、以下のストアドプロシージャには必須引数が1つ、オプション引数が2つあります。オプションの引数それぞれには、デフォルト値があります。
オプションの引数は省略可能です。引数を省略すると、その引数のデフォルト値が使用されます。
オプションの引数を省略し、署名で省略された引数の後に表示される別のオプションの引数を指定する必要がある場合は、位置引数ではなく名前付き引数を使用します。
たとえば、 prefix 引数を省略し、 suffix 引数を指定するとします。suffix 引数は署名の prefix の後に表示されるため、引数は名前で指定する必要があります。