NULL (Snowflake Scripting)

NULL kann als „NoOps“-Anweisung (keine Operation) verwendet werden.

Bemerkung

Die Verwendung von NULL als Anweisung ist nicht üblich. NULL wird normalerweise als Wert und nicht als Anweisung verwendet.

Als Wert bedeutet NULL „kein Wert“. Weitere Informationen dazu finden Sie im Wikipedia-Artikel zu SQL NULL (Englisch).

Bei der Verwendung von semistrukturierten Datentypen, wie z. B. JSON, müssen Sie möglicherweise zwischen NULL als SQL-Wert und NULL als JSON-Wert (auch „variant null“ genannt) unterscheiden.

Bemerkung

Dieses Snowflake Scripting-Konstrukt ist nur innerhalb eines Snowflake Scripting-Blocks gültig.

Syntax

NULL;
Copy

Nutzungshinweise

  • Die NULL-Anweisung kann nur innerhalb von Snowflake Scripting-Skripten ausgeführt werden.

  • 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.

  • Eine NULL-Anweisung in einer Verzweigung bewirkt nichts. Sie teilt dem Leser jedoch mit, dass der Autor des Codes die Bedingung, unter der die Verzweigung ausgeführt wird, ausdrücklich berücksichtigt hat. Mit anderen Worten: NULL zeigt, dass die Verzweigungsbedingung nicht übersehen oder versehentlich weggelassen wurde.

  • 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.

Beispiel

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;
$$
;
Copy
CALL null_as_statement();
+-------------------+
| NULL_AS_STATEMENT |
|-------------------|
|              NULL |
+-------------------+
Copy

Bemerkung

Der von der CALL-Anweisung zurückgegebene NULL-Wert ist nicht direkt auf die NULL-Anweisung in der Ausnahme zurückzuführen. Stattdessen ist NULL der Rückgabewert, da die gespeicherte Prozedur keine explizite RETURN-Anweisung ausgeführt hat.

Snowflake empfiehlt, dass gespeicherte Prozeduren explizit einen Wert zurückgeben, auch in jeder Verzweigung des Ausnahme-Handlers.