値を返す

値を返すには、 RETURN コマンドを使用します。次の場所から値を返すことができます。

  • ストアドプロシージャのブロック。

  • 匿名ブロック。

次に挙げるいずれかの型の値を返すことができます。

  • テーブル

    RETURN ステートメントで TABLE(...) を使用します。

    ブロックがストアドプロシージャにある場合は、 CREATE PROCEDURE ステートメントで RETURNS TABLE(...) 句も指定する必要があります。

    注釈

    現在、 RETURNS TABLE(...) 句では、列型として GEOGRAPHY を指定できません。これは、ストアドプロシージャまたは匿名プロシージャを作成する場合に適用されます。

    CREATE OR REPLACE PROCEDURE test_return_geography_table_1()
      RETURNS TABLE(g GEOGRAPHY)
      ...
    
    Copy
    WITH test_return_geography_table_1() AS PROCEDURE
      RETURNS TABLE(g GEOGRAPHY)
      ...
    CALL test_return_geography_table_1();
    
    Copy

    列タイプとして GEOGRAPHY を指定しようとすると、ストアドプロシージャの呼び出しはエラーになります。

    Stored procedure execution error: data type of returned table does not match expected returned table type
    
    Copy

    この問題を回避するには、 RETURNS TABLE() の列の引数と型を省略します。

    CREATE OR REPLACE PROCEDURE test_return_geography_table_1()
      RETURNS TABLE()
      ...
    
    Copy
    WITH test_return_geography_table_1() AS PROCEDURE
      RETURNS TABLE()
      ...
    CALL test_return_geography_table_1();
    
    Copy

    RESULTSET がポイントするデータを返す場合は、次の例に示すように、 RESULTSET を TABLE(...) に渡します。

    CREATE PROCEDURE ...
    RETURNS TABLE(...)
    ...
    RETURN TABLE(my_result_set);
    ...
    
    Copy

    RESULTSET をテーブルとして返す をご参照ください。