NULL (Script Snowflake)

NULL pode ser usado como uma instrução de “no-op” (nenhuma operação).

Nota

É incomum usar NULL como instrução. NULL é normalmente usado como um valor e não uma instrução.

Como valor, NULL significa “sem valor”. Para obter mais informações, consulte o artigo da Wikipédia sobre SQL NULL.

Ao trabalhar com tipos de dados semiestruturados, como JSON, você pode precisar distinguir entre NULL como um valor de SQL e NULL como um valor de JSON (também chamado de “variant null”).

Nota

Este constructo do Script Snowflake só é válido dentro de um bloco do Script Snowflake.

Sintaxe

NULL;
Copy

Notas de uso

  • A instrução NULL só pode ser executada dentro de scripts do Script Snowflake.

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

  • Uma instrução NULL em um ramo não faz nada; no entanto, ele comunica ao leitor que o autor do código considerou explicitamente a condição para a qual o ramo seria executado. Em outras palavras, o NULL mostra que a condição do ramo não foi negligenciada ou omitida acidentalmente.

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

Exemplo

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

Nota

O valor NULL retornado pela instrução CALL não se deve diretamente à instrução NULL na exceção; em vez disso, o valor de retorno é NULL porque o procedimento armazenado não executou uma instrução RETURN explícita.

O Snowflake recomenda que procedimentos armazenados retornem um valor explicitamente, inclusive em cada ramo do manipulador de exceções.