ストアドプロシージャからの選択¶
ストアドプロシージャの中には、表形式のデータを返すものがあります。このテーブルデータを選択して操作するには、 SELECT ステートメントの FROM 句でこれらのメソッドを呼び出します。
TABLE キーワードを使用して、 SELECT ステートメントを実行します。¶
ストアドプロシージャを呼び出すときは、 CALL コマンドを省略します。その代わりに、 TABLE キーワードを使用し、括弧の中にプロシージャ名を付けます。
ストアドプロシージャから選択する例¶
この例では、以下のテーブルのデータを使用します。
次のストアド プロシージャは、ユーザー ID に基づいて注文情報を返します。
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
次の SELECT ステートメントは、ストアド プロシージャの結果を取得します。
ストアドプロシージャからの選択の制限¶
ストアド・プロシージャからの選択には以下の制限があります。
SELECT ステートメントの FROM 句には、 SELECT、 SHOW、 DESCRIBE、 CALL ステートメントを実行するストアド プロシージャのみを配置できます。DDL、または DML 操作を使用して変更を行うストアドプロシージャは許可されません。CALL ステートメントを発行するストアドプロシージャの場合、これらの制限は呼び出されるストアドプロシージャに適用されます。
静的な出力スキーマを持つ表データを返すストアドプロシージャだけを、 SELECT ステートメントの FROM 句に入れることができます。出力列には名前と型が必要です。例えば、以下の RETURNS 句を持つストアドプロシージャがサポートされています。
以下の RETURNS 句を持つストアド・プロシージャは、表形式のデータを返さないためサポートされていません。
以下の RETURNS 句を持つストアド・プロシージャは、固定出力スキーマを提供しないため、サポートされていません。
ストアド・プロシージャは、 SELECT ブロックの FROM 句で、以下のいずれかのステートメントの中で呼び出す必要があります。
ストアド・プロシージャは、 SELECT ステートメントの外部で定義された CTE への参照のような、外部スコープからの相関入力引数を受け取ることはできません。
引数にサブクエリが含まれている場合、そのサブクエリは WITH 句で定義された CTE を使用することはできません。
ストアド・プロシージャの呼び出しを含む SELECT ステートメントは、ビュー本体、ユーザー定義関数(UDF)、ユーザー定義テーブル関数(UDTF)、または 行アクセス・ポリシー や データ・マスキング・ポリシー などのオブジェクトでは使用できません。
ストアドプロシージャを呼び出す SELECT ステートメントで バインド変数 は使用できません。たとえば、次の SELECT ステートメントは許可されていません。