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;
Copy

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 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;
Copy

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;
$$
;
Copy

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 ] ;
Copy

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;
Copy

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;
$$
;
Copy

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 ] ;
Copy

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;
Copy

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;
$$
;
Copy

Para obter a sintaxe completa e detalhes sobre instruções CASE, consulte CASE (Script Snowflake).