値を返す¶
値を返すには、 RETURN コマンドを使用します。次の場所から値を返すことができます。
ストアドプロシージャのブロック。
匿名ブロック。
戻り値のタイプ¶
次に挙げるいずれかの型の値を返すことができます。
テーブル
RETURN ステートメントで
TABLE(...)
を使用します。ブロックがストアドプロシージャにある場合は、 CREATE PROCEDURE ステートメントで
RETURNS TABLE(...)
句も指定する必要があります。注釈
現在、
RETURNS TABLE(...)
句では、 GEOGRAPHY を列タイプとして指定することはできません。これは、ストアドプロシージャまたは匿名プロシージャを作成する場合に適用されます。CREATE OR REPLACE PROCEDURE test_return_geography_table_1() RETURNS TABLE(g GEOGRAPHY) ...
WITH test_return_geography_table_1() AS PROCEDURE RETURNS TABLE(g GEOGRAPHY) ... CALL test_return_geography_table_1();
列タイプとして GEOGRAPHY を指定しようとすると、ストアドプロシージャの呼び出しはエラーになります。
Stored procedure execution error: data type of returned table does not match expected returned table type
この問題を回避するには、
RETURNS TABLE()
の列の引数と型を省略します。CREATE OR REPLACE PROCEDURE test_return_geography_table_1() RETURNS TABLE() ...
WITH test_return_geography_table_1() AS PROCEDURE RETURNS TABLE() ... CALL test_return_geography_table_1();
RESULTSET がポイントするデータを返す場合は、次の例に示すように、 RESULTSET を
TABLE(...)
に渡します。CREATE PROCEDURE ... RETURNS TABLE(...) ... RETURN TABLE(my_result_set); ...
RESULTSET をテーブルとして返す をご参照ください。
ストアドプロシージャの戻り値を変数に設定する¶
ストアドプロシージャ呼び出しからの戻り値の使用 をご参照ください。