Bestimmen der Anzahl der von SQL-Anweisungen 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 waren oder wie viele Zeilen von einer Abfrage zurückgegeben wurden.
Variable |
Beschreibung |
|---|---|
|
Anzahl der von der letzten DML-Anweisung betroffenen Zeilen oder die Anzahl der von der letzten SELECT-Abfrage zurückgegebenen Zeilen. Wird nach jeder Ausführung der Anweisung festgelegt. |
|
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.
Hinweis: Wenn Sie Snowflake CLI, SnowSQL, die klassische Konsole, den execute_stream oder die Methode execute_string in Python-Konnektor-Code verwenden, benutzen Sie stattdessen das folgende Beispiel (siehe 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.
Hinweis: Wenn Sie Snowflake CLI, SnowSQL, die klassische Konsole, den execute_stream oder die Methode execute_string in Python-Konnektor-Code verwenden, benutzen Sie stattdessen das folgende Beispiel (siehe 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.
ACTIVITY_COUNT-Beispiele¶
Im Gegensatz zu SQLROWCOUNT wird die Variable ACTIVITY_COUNT nach jeder Ausführung der Anweisung festgelegt, einschließlich SELECT-Abfragen. Dies ist nützlich, um sowohl die Anzahl der von DML-Operationen betroffenen Zeilen zu verfolgen als auch die Anzahl der von Abfragen zurückgegebenen Zeilen.
Das folgende Beispiel veranschaulicht ACTIVITY_COUNT nach einer INSERT-Anweisung und einer SELECT-Abfrage:
Hinweis: Wenn Sie Snowflake CLI, SnowSQL, die klassische Konsole, den execute_stream oder die Methode execute_string in Python-Konnektor-Code verwenden, benutzen Sie stattdessen das folgende Beispiel (siehe Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
Nach INSERT ist ACTIVITY_COUNT 3 (drei Zeilen eingefügt). Nach SELECT ist ACTIVITY_COUNT 2 (zwei Zeilen stimmen mit der WHERE value > 1-Bedingung überein).