Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
Databricks SQL
Databricks Runtime 16.3 e superior
Implementa um bloco de Script SQL que pode conter uma sequência de instruções SQL, instruções de controle de fluxo, declarações de variáveis locais e manipuladores de exceções.
Observação
Ao invocar uma instrução composta de um bloco de anotações, ela deve ser a única instrução na célula.
Sintaxe
[ label : ]
BEGIN
[ { declare_variable | declare_condition } ; [...] ]
[ declare_cursor ; [...] ]
[ declare_handler ; [...] ]
[ SQL_statement ; [...] ]
END [ label ]
declare_variable
DECLARE variable_name [, ...] datatype [ DEFAULT default_expr ]
declare_condition
DECLARE condition_name CONDITION [ FOR SQLSTATE [ VALUE ] sqlstate ]
declare_cursor
DECLARE cursor_name [ ASENSITIVE | INSENSITIVE ] CURSOR FOR query [ FOR READ ONLY ]
declare_handler
DECLARE handler_type HANDLER FOR condition_values handler_action
handler_type
EXIT | CONTINUE
condition_values
{ { SQLSTATE [ VALUE ] sqlstate | condition_name } [, ...] |
{ SQLEXCEPTION | NOT FOUND } [, ...] }
Antes do Databricks Runtime 17.2, você só podia declarar uma variável de cada vez.
Parâmetros
-
Um identificador opcional é usado para qualificar variáveis definidas dentro do composto e para sair do composto. Ambas as ocorrências de rótulo devem corresponder, e o rótulo
ENDsó pode ser especificado selabel:for também especificado.do rótulo não deve ser especificado para uma estrutura composta de nível superior.
NOT ATOMICEspecifica que, se uma instrução SQL dentro do composto falhar, as instruções SQL anteriores não serão revertidas. Este é o comportamento padrão e único.
declare_variableUma declaração de variável local para uma ou mais variáveis
-
Um nome para a variável. O nome não deve ser qualificado e deve ser exclusivo dentro da declaração composta.
data_typeQualquer tipo de dados suportado. Se o data_type for omitido, deverá especificar DEFAULT, e o tipo será derivado da expressão padrão.
{ DEFAULT | = } default_expressionDefine o valor inicial da variável após a declaração. default_expression deve ser convertível para data_type. Se nenhum padrão for especificado, a variável será inicializada com NULL.
-
Declare_conditionUma declaração de condição local
-
O nome não qualificado da condição está delimitado pela instrução composta.
sqlstateUm literal
STRINGde 5 caracteres alfanuméricos (sem distinção entre maiúsculas e minúsculas) que consiste em A-Z e 0..9. O SQLSTATE não deve começar com '00', '01' ou 'XX'. Qualquer SQLSTATE começando com '02' será capturado também pela exceção predefinida NOT FOUND. Se não for especificado, o SQLSTATE será '45000'.
-
-
Aplica-se a:
Runtime 18.1 e superioresUma declaração local do cursor para iterar através dos resultados da consulta.
Observação
Para
DECLARE CURSOR, apenas erros de sintaxe são detetados e aumentados. A consulta só é executada quando o cursor é aberto com OPEN.-
cursor_name: Um nome não qualificado para o cursor, único entre os cursores nesta instrução composta. Ao referenciar o cursor em OPEN, FETCH ou CLOSE, pode qualificar o nome do cursor com a etiqueta da instrução composta (por exemplo,
label.my_cursor) para desambiguar em escopos aninhados. -
ASENSITIVE|INSENSITIVE: Opcional. Uma vez aberto o cursor, o conjunto de resultados não é afetado pelas alterações do DML. Este é o comportamento padrão e o único suportado. - consulta: A consulta que define o cursor; é executado quando o cursor é aberto com OPEN.
-
cursor_name: Um nome não qualificado para o cursor, único entre os cursores nesta instrução composta. Ao referenciar o cursor em OPEN, FETCH ou CLOSE, pode qualificar o nome do cursor com a etiqueta da instrução composta (por exemplo,
declare_handlerUma declaração para um manipulador de erros.
handler_typeEXITDesigna o manipulador para sair da instrução composta depois que a condição é tratada. Todos os cursores abertos dentro da instrução composta e as instruções compostas aninhadas estão implicitamente fechadas.
CONTINUEAplica-se a:
Runtime 18.1 e superioresClassifica o handler para continuar a execução após a conclusão do handler. A execução recomeça com a instrução seguinte àquela que levantou a condição.
condition_valuesEspecifica a quais sqlstates ou condições o manipulador se aplica. Os valores de condição devem ser exclusivos em todos os manipuladores dentro da instrução composta. Os valores de condição específica têm precedência sobre
SQLEXCEPTION.sqlstateUm literal de 5 caracteres
STRING,'A'-'Z'e'0'-'9'(sem distinção de maiúsculas e minúsculas).-
Uma condição definida dentro desse composto, uma instrução composta externa ou uma classe de erro definida pelo sistema.
SQLEXCEPTIONAplica-se a qualquer condição de erro voltada para o usuário.
NOT FOUNDAplica-se a qualquer condição de erro com uma classe SQLSTATE '02', incluindo a condição de CURSOR_NO_MORE_ROWS (SQLSTATE
'02000') levantada ao buscar para além do final de um conjunto de resultados de cursor.handler_actionUma instrução SQL para executar quando qualquer um dos valores de condição ocorrer. Para adicionar várias instruções, use uma instrução composta aninhada.
SQL_statementUma instrução SQL, como DDL, DML, instrução de controle ou instrução composta. Qualquer instrução
SELECTouVALUESproduz um conjunto de resultados que o invocador pode consumir.
Exemplos
-- A compound statement with local variables, and exit hanlder and a nested compound.
> BEGIN
DECLARE a INT DEFAULT 1;
DECLARE b INT DEFAULT 5;
DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
div0: BEGIN
VALUES (15);
END div0;
SET a = 10;
SET a = b / 0;
VALUES (a);
END;
15