Snowflake Scripting:全变更(待定)

注意

此行为变更在 2025_01 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

启用此行为变更捆绑包后,DML 命令的 Snowflake Scripting 全局变量会做出不同的行为。这些变量在 确定受 DML 命令影响的行数 中进行了说明。

在 Snowflake Scripting 块或存储过程中的最后一个 DML 语句之后执行非 DML 语句时,这些变量的行为如下:

变更前:

变量返回最后一个 DML 语句设置的值:

  • SQLROWCOUNT – 受最后一个 DML 语句影响的行数。

  • SQLFOUNDTRUEFALSE 基于最后一个 DML 语句。

  • SQLNOTFOUNDTRUEFALSE 基于最后一个 DML 语句。

变更后:

变量返回 NULL。

例如,以下 Snowflake Scripting 匿名块在变更前后会返回不同的值:

EXECUTE IMMEDIATE
$$
BEGIN
  CREATE OR REPLACE TABLE test_snowflake_scripting_gv (i INT);
  INSERT INTO test_snowflake_scripting_gv VALUES (1);
  SELECT 1;
  RETURN SQLROWCOUNT;
END;
$$;
Copy
变更前的返回值::
+-----------------+
| anonymous block |
|-----------------|
|               1 |
+-----------------+
变更后的返回值::
+-----------------+
| anonymous block |
|-----------------|
|            NULL |
+-----------------+

要在变更后实现之前的行为,请在后续非 DML 语句之前将 Snowflake Scripting 全局变量值保存到新变量中,然后返回新变量的值。例如:

EXECUTE IMMEDIATE
$$
BEGIN
  LET sql_row_count_var := 0;
  CREATE OR REPLACE TABLE test_snowflake_scripting_gv (i INT);
  INSERT INTO test_snowflake_scripting_gv VALUES (1);
  sql_row_count_var := SQLROWCOUNT;
  SELECT 1;
  RETURN sql_row_count_var;
END;
$$;
Copy

参考:1850

语言: 中文