Como trabalhar com construções de ramificação¶
O Script Snowflake oferece suporte para as seguintes construções de ramificação:
IF-THEN-ELSEIF-ELSE
CASE
Neste tópico:
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 is 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 se nenhuma das condições for avaliada como verdadeira, adicione uma cláusula
ELSE
.As cláusulas
ELSEIF
eELSE
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;Nota: se você estiver usando SnowSQL ou Classic Console, use este exemplo (consulte Como usar o Script Snowflake no SnowSQL e na Classic Console):
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; $$ ;
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;Nota: se você estiver usando SnowSQL ou Classic Console, use este exemplo (consulte Como usar o Script Snowflake no SnowSQL e na Classic Console):
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; $$ ;
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;Nota: se você estiver usando SnowSQL ou Classic Console, use este exemplo (consulte Como usar o Script Snowflake no SnowSQL e na Classic Console):
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; $$ ;
Para obter a sintaxe completa e detalhes sobre instruções CASE
, consulte CASE (Script Snowflake).