RETURN (Snowflake Scripting)

返回指定表达式的值。

有关返回值的更多信息,请参阅 返回值

备注

Snowflake Scripting 结构仅在 Snowflake Scripting 区块 内有效。

语法

RETURN <expression>;
Copy

其中:

expression

计算结果为要返回的值的表达式。

使用说明

  • RETURN 语句可以在以下程序中执行:

    • 存储过程。

    • 匿名块。

  • 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

  • 可以将变量设置为存储过程的返回值。有关更多信息,请参阅 使用从存储过程调用返回的值

示例

此示例声明了名为 my_var 的变量,将该变量用于 Snowflake Scripting 匿名块,然后返回该变量的值:

DECLARE
  my_var VARCHAR;
BEGIN
  my_var := 'Snowflake';
  RETURN my_var;
END;
Copy

注意:如果您在 Python Connector 代码中使用 Snowflake CLISnowSQLClassic Console 或者 execute_streamexecute_string 方法,请改用本示例(请参阅 在 Snowflake CLI、SnowSQL、Classic Console 和 Python Connector 中使用 Snowflake Scripting):

EXECUTE IMMEDIATE
$$
DECLARE
  my_var VARCHAR;
BEGIN
  my_var := 'Snowflake';
  RETURN my_var;
END;
$$;
Copy
语言: 中文