NULL (Script Snowflake)¶
NULL pode ser usado como uma instrução de “no-op” (nenhuma operação).
Nota
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»).
Nota
Este constructo do Script Snowflake só é válido dentro de um bloco do Script Snowflake.
Sintaxe¶
NULL;
Notas de uso¶
The NULL statement can be executed only inside Snowflake Scripting code.
Uma instrução NULL em um manipulador de exceções garante que o código continue sendo executado em vez de abortar se não houver um manipulador de nível superior.
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.
Antes de utilizar a instrução NULL, considere alternativas.
Por exemplo, suponha que você esteja escrevendo um procedimento armazenado com um manipulador de exceções. Na maioria dos procedimentos armazenados, se cada caminho de código sem exceção deve retornar um valor, então cada caminho de código envolvendo um manipulador de exceções também deve retornar um valor. Nesse caso, evite executar uma instrução NULL. Em vez disso, considere retornar explicitamente NULL, um conjunto de resultados vazio ou um indicador de erro.
Você também pode usar uma CONTINUE manipulador para executar instruções no bloco de exceção e continua com a instrução imediatamente após a que causou o erro. Para obter mais informações, consulte Handling an exception in Snowflake Scripting.
Examples¶
O código a seguir usa uma instrução NULL em um manipulador de exceções para garantir que a exceção seja capturada (em vez de passada para o chamador), mas nenhuma ação específica seja tomada:
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;
$$
;
Chame o procedimento armazenado:
CALL null_as_statement();
+-------------------+
| NULL_AS_STATEMENT |
|-------------------|
| NULL |
+-------------------+
Nota
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.
O Snowflake recomenda que procedimentos armazenados retornem um valor explicitamente, inclusive em cada ramo do manipulador de exceções.