Javaストアドプロシージャから表形式のデータを返します。¶
表形式フォームでデータを返すプロシージャを書くことができます。表形式データを返すプロシージャを作成するには、次の手順を実行します。
CREATE PROCEDURE ステートメントで、プロシージャの戻り値の型として
TABLE(...)を指定します。TABLE パラメータとして、返されたデータの列名と 型 がわかっている場合はそれらを指定できます。実行時に指定された場合など、プロシージャを定義するときに返される列がわからない場合は、TABLE パラメータを省略できます。これを行うと、プロシージャの戻り値の列は、そのハンドラーによって返されたデータフレームの列から変換されます。列のデータ型は、 SQL-Javaデータ型マッピング で指定されたマッピングに従って SQL に変換されます。
Snowpark DataFrame で表形式の結果を返すようにハンドラーを記述します。
データフレームの詳細については、 Snowpark Javaでの DataFrames の操作 をご参照ください。
注釈
次のいずれかに該当する場合、プロシージャは実行時にエラーを生成します。
戻り値の型として TABLE を宣言していますが、そのハンドラーは DataFrame を返していない。
そのハンドラは DataFrame を返していますが、プロシージャは TABLE を戻り値の型として宣言していない。
例¶
このセクションの例は、列が文字列と一致する行をフィルターするプロシージャーから表形式の値を返すことを示しています。
データの定義¶
次の例のコードは、従業員のテーブルを作成します。
行をフィルターするプロシージャの宣言¶
次の2つの例のコードは、テーブル名とロールを引数として受け取るストアドプロシージャを作成し、ロール列の値が引数として指定されたロールと一致するテーブル内の行を返します。
戻り列の名前と型の指定¶
この例では、 RETURNS TABLE() ステートメントで列の名前と型を指定しています。
注釈
現在、 RETURNS TABLE(...) 句では、 GEOGRAPHY を列タイプとして指定することはできません。これは、ストアドプロシージャまたは匿名プロシージャを作成する場合に適用されます。
列タイプとして GEOGRAPHY を指定しようとすると、ストアドプロシージャの呼び出しはエラーになります。
この問題を回避するには、 RETURNS TABLE() の列の引数と型を省略します。
戻り列の名前と型の省略¶
次の例のコードは、戻り値の列名と型をハンドラーの戻り値の列から挿入できるようにするプロシージャを宣言します。 RETURNS TABLE() ステートメントから列名と型が省略されています。
プロシージャの呼び出し¶
次の例では、ストアドプロシージャを呼び出します。
プロシージャの呼び出しにより、次の出力が生成されます。