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 „VARIANTNULL“ 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-Code 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.

    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 Behandeln einer Ausnahme in Snowflake Scripting.

Beispiele

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

Rufen Sie die gespeicherte Prozedur auf:

CALL null_as_statement();
Copy
+-------------------+
| NULL_AS_STATEMENT |
|-------------------|
| NULL              |
+-------------------+

Bemerkung

Der NULL-Wert, der von der CALL-Anweisung zurückgegeben wird, ist nicht direkt auf die NULL-Anweisung in der Ausnahme zurückzuführen. Stattdessen lautet der Rückgabewert NULL, 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.