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
oderFALSE
basierend auf der letzten DML-Anweisung.SQLNOTFOUND
-TRUE
oderFALSE
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;
$$;
- 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;
$$;
Ref: 1850