DECLARE (Script Snowflake)

Declara uma ou mais variáveis, cursores, RESULTSETs ou exceções do Script Snowflake.

Para obter mais informações sobre variáveis, cursores, RESULTSETs e exceções, consulte:

Consulte também:

LET

Sintaxe

DECLARE
  { <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> };
  [{ <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> }; ... ]
Copy

A sintaxe para cada tipo de instrução é descrita a seguir com mais detalhes.

Sintaxe da instrução variável

Use a seguinte sintaxe para declarar uma variável.

<variable_declaration> ::=
  <variable_name> [<type>] [ { DEFAULT | := } <expression>]
Copy

Onde:

variable_name

O nome da variável. O nome deve seguir as regras de nomenclatura para Identificadores de objetos.

type

Um tipo de dados SQL.

DEFAULT expression ou . := expression

Atribui o valor de expression à variável. Se ambos type e expression forem especificados, a expressão deve ser avaliada como um tipo de dados que corresponda, ou pode ser implicitamente convertida no type especificado.

Por exemplo:

profit NUMBER(38, 2) := 0;
Copy

Para um exemplo completo, consulte Exemplos.

Para obter mais informações sobre variáveis, consulte Como trabalhar com variáveis.

Sintaxe da instrução do cursor

Use a seguinte sintaxe para declarar um cursor.

<cursor_declaration> ::=
  <cursor_name> CURSOR FOR <query>
Copy

Onde:

cursor_name

O nome a ser dado ao cursor. Ele pode ser qualquer identificador válido do Snowflake que ainda não esteja em uso neste bloco. O identificador é usado por outros comandos relacionados ao cursor, tais como FETCH.

query

A consulta que define o conjunto de resultados sobre os quais o cursor faz iteração.

Isso pode ser quase qualquer instrução SELECT válida.

Por exemplo:

c1 CURSOR FOR SELECT id, price FROM invoices;
Copy

Para obter mais informações sobre cursores (incluindo exemplos completos), consulte Como trabalhar com cursores.

Sintaxe da instrução RESULTSET

Use a seguinte sintaxe para declarar um RESULTSET.

<resultset_name> RESULTSET [ { DEFAULT | := } [ ASYNC ] ( <query> ) ] ;
Copy

Onde:

resultset_name

O nome a ser dado ao RESULTSET.

O nome deve ser único dentro do escopo atual.

O nome deve seguir as regras de nomenclatura para Identificadores de objetos.

ASYNC

Executa a consulta como um trabalho filho anônimo.

A consulta pode ser qualquer instrução SQL válida, incluindo instruções SELECT e instruções DML, como INSERT ou UPDATE.

Quando essa palavra-chave é omitida, o procedimento armazenado executa os trabalhos secundários sequencialmente, e cada trabalho secundário aguarda a conclusão do trabalho secundário em execução antes de iniciar.

É possível usar essa palavra-chave para executar vários trabalhos secundários simultaneamente, o que pode aumentar a eficiência e reduzir o tempo total de execução.

É possível usar as instruções AWAIT e CANCEL para gerenciar trabalhos filho assíncronos para um RESULTSET.

DEFAULT query ou . := query

Atribui o valor de query a RESULTSET.

Por exemplo:

res RESULTSET DEFAULT (SELECT col1 FROM mytable ORDER BY col1);
Copy

Para obter mais informações sobre RESULTSETs (incluindo exemplos completos), consulte Como trabalhar com RESULTSETs.

Sintaxe da instrução de exceção

Use a seguinte sintaxe para declarar uma exceção.

<exception_name> EXCEPTION [ ( <exception_number> , '<exception_message>' ) ] ;
Copy

Onde:

exception_name

O nome a ser dado à exceção.

exception_number

Um número para identificar a exceção de forma única. O número deve ser um número inteiro entre -20000 e -20999. O número não deve ser utilizado para nenhuma outra exceção que exista ao mesmo tempo.

Padrão: -20000

exception_message

Uma mensagem para descrever a exceção. A mensagem não deve conter nenhum caractere de aspas duplas.

Padrão: cadeia de caracteres vazia.

Por exemplo:

exception_could_not_create_table EXCEPTION (-20003, 'ERROR: Could not create table.');
Copy

Para obter mais informações sobre exceções (incluindo exemplos completos), consulte Tratamento de exceções.

Exemplos

Este exemplo declara uma variável chamada profit para uso em um bloco anônimo do Snowflake Scripting:

DECLARE
  profit number(38, 2) DEFAULT 0.0;
BEGIN
  LET cost number(38, 2) := 100.0;
  LET revenue number(38, 2) DEFAULT 110.0;

  profit := revenue - cost;
  RETURN profit;
END;
Copy

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
  profit number(38, 2) DEFAULT 0.0;
BEGIN
  LET cost number(38, 2) := 100.0;
  LET revenue number(38, 2) DEFAULT 110.0;

  profit := revenue - cost;
  RETURN profit;
END;
$$
;
Copy

Para obter mais exemplos que declaram variáveis, cursores, RESULTSETs e exceções, consulte: