Bestimmen der Anzahl der von DML-Befehlen betroffenen Zeilen¶
Nach der Ausführung eines DML-Befehls (mit Ausnahme des TRUNCATE TABLE-Befehls), setzt Snowflake Scripting die folgenden globalen Variablen. Sie können diese Variablen verwenden, um festzustellen, ob von der letzten DML-Anweisung irgendwelche Zeilen betroffen sind.
Variable |
Beschreibung |
|---|---|
|
Anzahl der von der letzten DML-Anweisung betroffenen Zeilen. Dies ist äquivalent zu |
|
|
|
|
Bemerkung
Das 2025_01 Verhaltensänderungs-Bundle ändert die Verhaltensweise dieser Variablen. Wenn das Bundle aktiviert ist, geben die Variablen NULL zurück, wenn eine Anweisung, die nicht DML ist, nach der letzten DML-Anweisung in einem Snowflake Scripting-Block oder einer gespeicherten Prozedur ausgeführt wird. Das Bundle ist standardmäßig aktiviert. Weitere Informationen über die Verhaltensänderung finden Sie unter Snowflake Scripting: Änderungen an globalen Variablen.
Wenn das Bundle deaktiviert ist, können Sie es unter in Ihrem Konto aktivieren, indem Sie die folgende Anweisung ausführen:
Um das Bundle zu deaktivieren, führen Sie die folgende Anweisung aus:
Die Beispiele in diesem Abschnitt verwenden die folgende Tabelle:
Das folgende Beispiel verwendet die Variable SQLROWCOUNT, um die Anzahl der Zeilen zu ermitteln, die von der letzten DML-Anweisung (der INSERT-Anweisung) betroffen sind.
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
Im folgenden Beispiel werden die Variablen SQLFOUND und SQLNOTFOUND verwendet, um die Anzahl der Zeilen zurückzugeben, die von der letzten DML-Anweisung (der UPDATE-Anweisung) betroffen sind.
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
Wenn der anonyme Block ausgeführt wird, lautet die Variable SQLFOUND true, da die UPDATE-Anweisung zwei Zeilen aktualisiert.
Fragen Sie die Tabelle ab, um die aktuellen Werte anzuzeigen:
Führen Sie denselben anonymen Block noch einmal aus und Sie erhalten folgende Ergebnisse:
Die UPDATE-Anweisung wird ausgeführt, weil es in der Tabelle einen Wert gibt, der größer ist als
2. Das heißt, die IF-Bedingung ist erfüllt.Die
SQLNOTFOUND-Variable isttrue, da keine Zeilen aktualisiert werden. Die UPDATE-Anweisung aktualisiert keine Zeilen, da keiner der Werte in der Tabelle kleiner als3ist (angegeben in der WHERE-Klausel).
Die Abfrage gibt die folgende Ausgabe zurück:
Aktualisieren Sie nun die Tabelle, um alle Werte auf 1 zu setzen:
Führen Sie denselben anonymen Block noch einmal aus, und die UPDATE-Anweisung wird nicht ausgeführt, weil keiner der Werte in der Tabelle größer als 2 ist. Das heißt, die IF-Bedingung ist nicht erfüllt, sodass die UPDATE-Anweisung nicht ausgeführt wird.