CASE (Script Snowflake)¶
Uma instrução CASE fornece uma maneira de especificar múltiplas condições.
Para obter mais informações sobre construções de ramificações, consulte Como trabalhar com lógica condicional.
Nota
Este constructo do Script Snowflake só é válido dentro de um bloco do Script Snowflake.
Sintaxe¶
Instrução CASE simples:
CASE ( <expression_to_match> ) WHEN <expression> THEN <statement>; [ <statement>; ... ] [ WHEN ... ] [ ELSE <statement>; [ <statement>; ... ] ] END [ CASE ] ;
Onde:
expression_to_matchA expressão a ser correspondida.
expressionSe o valor desta expressão corresponder ao valor de
expression_to_match, então as instruções nesta cláusula serão executadas.
statementUma instrução pode ser qualquer uma das seguintes opções:
Uma única instrução SQL (incluindo CALL).
Uma instrução de fluxo de controle (por exemplo, uma instrução de loop ou ramificação).
Um bloco aninhado.
Instrução CASE pesquisada:
CASE WHEN <boolean_expression> THEN <statement>; [ <statement>; ... ] [ WHEN ... ] [ ELSE <statement>; [ <statement>; ... ] ] END [ CASE ] ;
Onde:
boolean_expressionSe esta expressão avaliar como TRUE, então as instruções nesta cláusula serão executadas.
statementUma instrução pode ser qualquer uma das seguintes opções:
Uma única instrução SQL (incluindo CALL).
Uma instrução de fluxo de controle (por exemplo, uma instrução de loop ou ramificação).
Um bloco aninhado.
Notas de uso¶
Se mais de um ramo do
CASEcorresponder à expressão, apenas o primeiro será utilizado.Quando você compara expressões, NULL não corresponde a NULL. Se você deseja testar explicitamente para valores NULL, use IS [ NOT ] NULL.
Exemplos¶
Este exemplo demonstra uma instrução simples CASE:
CREATE PROCEDURE case_demo_01(v VARCHAR) RETURNS VARCHAR LANGUAGE SQL AS BEGIN CASE (v) WHEN 'first choice' THEN RETURN 'one'; WHEN 'second choice' THEN RETURN 'two'; ELSE RETURN 'unexpected choice'; END; END;Observação: se você usar o Snowflake CLI, SnowSQL, o Classic Console, ou o método
execute_streamouexecute_stringno código Python Connector, use este exemplo (consulte Usar o Snowflake Scripting no Snowflake CLI, SnowSQL, Classic Console e Python Connector):CREATE PROCEDURE case_demo_01(v VARCHAR) RETURNS VARCHAR LANGUAGE SQL AS $$ BEGIN CASE (v) WHEN 'first choice' THEN RETURN 'one'; WHEN 'second choice' THEN RETURN 'two'; ELSE RETURN 'unexpected choice'; END CASE; END; $$ ;
Quando você chama este procedimento armazenado, o procedimento produz o seguinte resultado:
CALL case_demo_01('second choice'); +--------------+ | CASE_DEMO_01 | |--------------| | two | +--------------+
Este exemplo demonstra uma instrução CASE pesquisada:
CREATE PROCEDURE case_demo_2(v VARCHAR) RETURNS VARCHAR LANGUAGE SQL AS BEGIN CASE WHEN v = 'first choice' THEN RETURN 'one'; WHEN v = 'second choice' THEN RETURN 'two'; ELSE RETURN 'unexpected choice'; END; END;Observação: se você usar o Snowflake CLI, SnowSQL, o Classic Console, ou o método
execute_streamouexecute_stringno código Python Connector, use este exemplo (consulte Usar o Snowflake Scripting no Snowflake CLI, SnowSQL, Classic Console e Python Connector):CREATE PROCEDURE case_demo_2(v VARCHAR) RETURNS VARCHAR LANGUAGE SQL AS $$ BEGIN CASE WHEN v = 'first choice' THEN RETURN 'one'; WHEN v = 'second choice' THEN RETURN 'two'; ELSE RETURN 'unexpected choice'; END CASE; END; $$ ;
Quando você chama este procedimento armazenado, o procedimento produz o seguinte resultado:
CALL case_demo_2('none of the above'); +-------------------+ | CASE_DEMO_2 | |-------------------| | unexpected choice | +-------------------+