返回值

若要返回值,请使用 RETURN 命令。您可以从以下位置返回值:

  • 存储过程中的块。

  • 匿名块。

可以返回以下类型的值:

  • 在 RETURN 语句中使用 TABLE(...)

    如果块在存储过程中,还必须指定 RETURNS TABLE(...) 语句中的 CREATE PROCEDURE 子句。

    备注

    目前,在 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

语言: 中文