CASE¶
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 construções de ramificação.
Sintaxe¶
Instrução CASE simples:
CASE ( <expression_to_match> ) WHEN <expression> THEN <statement>; [ <statement>; ... ] [ WHEN ... ] [ ELSE <statement>; [ <statement>; ... ] ] END [ CASE ] ;
Onde:
expression_to_match
A expressão a ser correspondida.
expression
Se o valor desta expressão corresponder ao valor de
expression_to_match
, então as instruções nesta cláusula serão executadas.
statement
Uma instrução pode ser qualquer uma das seguintes opções:
Uma única instrução SQL (incluindo CALL).
Uma instrução de fluxo de controle (ex.: instrução de looping 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_expression
Se esta expressão avaliar como TRUE, então as instruções nesta cláusula serão executadas.
statement
Uma instrução pode ser qualquer uma das seguintes opções:
Uma única instrução SQL (incluindo CALL).
Uma instrução de fluxo de controle (ex.: instrução de looping ou ramificação).
Um bloco aninhado.
Notas de uso¶
Se mais de um ramo do
CASE
corresponder à 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;Nota: se você estiver usando o SnowSQL ou a interface da Web clássica, use este exemplo (consulte Como usar o Script Snowflake no SnowSQL e na interface da web clássica):
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;Nota: se você estiver usando o SnowSQL ou a interface da Web clássica, use este exemplo (consulte Como usar o Script Snowflake no SnowSQL e na interface da web clássica):
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 | +-------------------+