Snowflake Scripting: Änderungen an globalen Variablen (Ausstehend)

Achtung

Diese Verhaltensänderung ist in Bundle 2025_01 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Wenn dieses Verhaltensänderungs-Bundle aktiviert ist, verhalten sich die globalen Snowflake Scripting-Variablen für DML-Befehle anders. Diese Variablen werden unter Bestimmen der Anzahl der von DML-Befehlen betroffenen Zeilen beschrieben.

Wenn eine Anweisung, die nicht vonDML stammt, nach der letzten DML-Anweisung in einem Snowflake Scripting-Block oder einer gespeicherten Prozedur ausgeführt wird, verhalten sich diese Variablen wie folgt:

Vor der Änderung:

Die Variablen geben den Wert zurück, der durch die letzte DML-Anweisung gesetzt wurde:

  • SQLROWCOUNT - Anzahl der von der letzten DML-Anweisung betroffenen Zeilen.

  • SQLFOUND - TRUE oder FALSE basierend auf der letzten DML-Anweisung.

  • SQLNOTFOUND - TRUE oder FALSE basierend auf der letzten DML-Anweisung.

Nach der Änderung:

Die Variablen geben NULL zurück.

Der folgende anonyme Snowflake Scripting-Block gibt zum Beispiel vor und nach der Änderung unterschiedliche Werte zurück:

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
Zurückgegebener Wert vor der Änderung::
+-----------------+
| anonymous block |
|-----------------|
|               1 |
+-----------------+
Zurückgegebener Wert nach der Änderung::
+-----------------+
| anonymous block |
|-----------------|
|            NULL |
+-----------------+

Um das vorherige Verhalten nach der Änderung zu erreichen, speichern Sie den Wert der globalen Snowflake Scripting-Variable in einer neuen Variablen, bevor Sie die nachfolgenden Anweisungen ausführen, die nicht vonDML stammen, und geben dann den Wert der neuen Variablen zurück. Beispiel:

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

Ref: 1850