Como trabalhar com lógica condicional¶
O Script Snowflake oferece suporte às seguintes construções de ramificação para lógica condicional:
IF-THEN-ELSEIF-ELSE
CASE
Instruções IF¶
No Script Snowflake, você pode executar um conjunto de instruções se uma condição for satisfeita usando uma instrução IF.
A sintaxe para a instrução IF é:
IF (<condition>) THEN
-- Statements to execute if the <condition> is true.
[ ELSEIF ( <condition_2> ) THEN
-- Statements to execute if the <condition_2> is true.
]
[ ELSE
-- Statements to execute if none of the conditions are true.
]
END IF ;
Em uma instrução IF:
Se você precisar especificar condições adicionais, adicione uma cláusula ELSEIF para cada condição.
Para especificar as instruções a serem executadas quando nenhuma das condições for avaliada como TRUE, adicione uma cláusula ELSE.
As cláusulas ELSEIF e ELSE são opcionais.
A seguir, veja um exemplo simples de uma instrução IF:
BEGIN
LET count := 1;
IF (count < 0) THEN
RETURN 'negative value';
ELSEIF (count = 0) THEN
RETURN 'zero';
ELSE
RETURN 'positive value';
END IF;
END;
Observação: se você estiver usando o método SnowSQL, o Classic Console, execute_stream
ou execute_string
no código Python Connector, use este exemplo (consulte Uso do Script Snowflake em SnowSQL, Classic Console e conector Python):
EXECUTE IMMEDIATE $$
BEGIN
LET count := 1;
IF (count < 0) THEN
RETURN 'negative value';
ELSEIF (count = 0) THEN
RETURN 'zero';
ELSE
RETURN 'positive value';
END IF;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| positive value |
+-----------------+
Para obter a sintaxe completa e detalhes sobre instruções IF, consulte IF (Script Snowflake).
Instruções CASE¶
Uma instrução CASE comporta-se de maneira semelhante a uma instrução IF, mas fornece uma maneira mais simples de especificar condições múltiplas.
O Script Snowflake oferece suporte para duas formas da instrução CASE:
As próximas seções explicam como usar essas diferentes formas.
Nota
O Snowflake oferece suporte para outros usos da palavra-chave CASE fora do Script Snowflake (por exemplo, a expressão condicional CASE).
Instruções CASE simples¶
Em uma instrução CASE simples, você define diferentes ramificações (cláusulas WHEN) para diferentes valores possíveis de uma determinada expressão.
A sintaxe para a instrução CASE simples é:
CASE ( <expression_to_match> )
WHEN <value_1_of_expression> THEN
<statement>;
[ <statement>; ... ]
[ WHEN <value_2_of_expression> THEN
<statement>;
[ <statement>; ... ]
]
... -- Additional WHEN clauses for other possible values;
[ ELSE
<statement>;
[ <statement>; ... ]
]
END [ CASE ] ;
O Snowflake executa a primeira ramificação para a qual value_n_of_expression
corresponde ao valor de expression_to_match
.
Por exemplo, suponha que você queira executar instruções diferentes com base no valor da variável expression_to_evaluate
. Para cada valor possível dessa variável (por exemplo, value a
, value b
, etc.), você pode definir uma cláusula WHEN que especifica a(s) instrução(ões) a ser(em) executada(s):
DECLARE
expression_to_evaluate VARCHAR DEFAULT 'default value';
BEGIN
expression_to_evaluate := 'value a';
CASE (expression_to_evaluate)
WHEN 'value a' THEN
RETURN 'x';
WHEN 'value b' THEN
RETURN 'y';
WHEN 'value c' THEN
RETURN 'z';
WHEN 'default value' THEN
RETURN 'default';
ELSE
RETURN 'other';
END;
END;
Observação: se você estiver usando o método SnowSQL, o Classic Console, execute_stream
ou execute_string
no código Python Connector, use este exemplo (consulte Uso do Script Snowflake em SnowSQL, Classic Console e conector Python):
EXECUTE IMMEDIATE $$
DECLARE
expression_to_evaluate VARCHAR DEFAULT 'default value';
BEGIN
expression_to_evaluate := 'value a';
CASE (expression_to_evaluate)
WHEN 'value a' THEN
RETURN 'x';
WHEN 'value b' THEN
RETURN 'y';
WHEN 'value c' THEN
RETURN 'z';
WHEN 'default value' THEN
RETURN 'default';
ELSE
RETURN 'other';
END;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| x |
+-----------------+
Para obter a sintaxe completa e detalhes sobre instruções CASE, consulte CASE (Script Snowflake).
Instruções CASE pesquisadas¶
Na instrução CASE pesquisada, você especifica condições diferentes para cada ramificação (cláusula WHEN). O Snowflake executa a primeira ramificação para a qual a expressão é avaliada como TRUE.
A sintaxe da instrução pesquisada é CASE:
CASE
WHEN <condition_1> THEN
<statement>;
[ <statement>; ... ]
[ WHEN <condition_2> THEN
<statement>;
[ <statement>; ... ]
]
... -- Additional WHEN clauses for other possible conditions;
[ ELSE
<statement>;
[ <statement>; ... ]
]
END [ CASE ] ;
Por exemplo, quando você executa a seguinte instrução CASE, o valor retornado é a is x
porqua esse ramificação é a primeira ramificação em que a expressão é avaliada como TRUE:
DECLARE
a VARCHAR DEFAULT 'x';
b VARCHAR DEFAULT 'y';
c VARCHAR DEFAULT 'z';
BEGIN
CASE
WHEN a = 'x' THEN
RETURN 'a is x';
WHEN b = 'y' THEN
RETURN 'b is y';
WHEN c = 'z' THEN
RETURN 'c is z';
ELSE
RETURN 'a is not x, b is not y, and c is not z';
END;
END;
Observação: se você estiver usando o método SnowSQL, o Classic Console, execute_stream
ou execute_string
no código Python Connector, use este exemplo (consulte Uso do Script Snowflake em SnowSQL, Classic Console e conector Python):
EXECUTE IMMEDIATE $$
DECLARE
a VARCHAR DEFAULT 'x';
b VARCHAR DEFAULT 'y';
c VARCHAR DEFAULT 'z';
BEGIN
CASE
WHEN a = 'x' THEN
RETURN 'a is x';
WHEN b = 'y' THEN
RETURN 'b is y';
WHEN c = 'z' THEN
RETURN 'c is z';
ELSE
RETURN 'a is not x, b is not y, and c is not z';
END;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| a is x |
+-----------------+
Para obter a sintaxe completa e detalhes sobre instruções CASE, consulte CASE (Script Snowflake).