返回值¶
若要返回值,请使用 RETURN 命令。您可以从以下位置返回值:
存储过程中的块。
匿名块。
可以返回以下类型的值:
表
在 RETURN 语句中使用
TABLE(...)
。如果块在存储过程中,还必须指定
RETURNS TABLE(...)
语句中的 CREATE PROCEDURE 子句。备注
目前,在
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。