NULL (Snowflake Scripting)¶
NULL kann als „NoOps“-Anweisung (keine Operation) verwendet werden.
Bemerkung
Using NULL as a statement is uncommon. NULL is usually used as a value, rather than as a statement.
As a value, NULL means „no value.“ For more information, see the Wikipedia article on SQL NULL.
When working with semi-structured data types, such as JSON, you might need to distinguish between NULL as an SQL value and NULL as a JSON value (also called „VARIANT NULL“).
Bemerkung
Dieses Snowflake Scripting-Konstrukt ist nur innerhalb eines Snowflake Scripting-Blocks gültig.
Syntax¶
NULL;
Nutzungshinweise¶
The NULL statement can be executed only inside Snowflake Scripting code.
Eine NULL-Anweisung in einem Ausnahme-Handler stellt sicher, dass der Code weiter ausgeführt wird und nicht abbricht, wenn kein übergeordneter Handler vorhanden ist.
A NULL statement in a branch does nothing; however, it communicates to the reader that the author of the code explicitly considered the condition for which the branch would execute. In other words, the NULL shows that the branch condition wasn’t overlooked or accidentally omitted.
Bevor Sie die NULL-Anweisung verwenden, sollten Sie Alternativen in Betracht ziehen.
Angenommen, Sie schreiben eine gespeicherte Prozedur mit einem Ausnahme-Handler. In den meisten gespeicherten Prozeduren wird erwartet, dass jeder Codepfad, der keine Ausnahme darstellt, einen Wert zurückgibt. Daher sollte auch jeder Codepfad, der einen Ausnahme-Handler beinhaltet, einen Wert zurückgeben. In einem solchen Fall sollte die Ausführung einer NULL-Anweisung vermieden werden. Erwägen Sie stattdessen die explizite Rückgabe des NULL-Werts, eines leeren Resultsets oder eines Fehlerindikators.
Sie können auch eine CONTINUE-Handler verwenden, um Anweisungen im Ausnahmeblock auszuführen, und mit der Anweisung fortzufahren, die unmittelbar auf die Anweisung folgt, die den Fehler verursacht hat. Weitere Informationen dazu finden Sie unter Handling an exception in Snowflake Scripting.
Examples¶
Im folgenden Codebeispiel wird eine NULL-Anweisung in einem Ausnahme-Handler verwendet, um sicherzustellen, dass die Ausnahme abgefangen (und nicht an den Aufrufer weitergegeben) wird und dass keine spezifische Aktion ausgeführt wird:
CREATE PROCEDURE null_as_statement()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
BEGIN
SELECT 1 / 0;
RETURN 'If you see this, the exception was not thrown/caught properly.';
EXCEPTION
WHEN OTHER THEN
NULL;
END;
$$
;
Rufen Sie die gespeicherte Prozedur auf:
CALL null_as_statement();
+-------------------+
| NULL_AS_STATEMENT |
|-------------------|
| NULL |
+-------------------+
Bemerkung
The NULL value returned by the CALL statement isn’t directly due to the NULL statement in the exception. Instead, the return value is NULL because the stored procedure didn’t execute an explicit RETURN statement.
Snowflake empfiehlt, dass gespeicherte Prozeduren explizit einen Wert zurückgeben, auch in jeder Verzweigung des Ausnahme-Handlers.