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
Importante
Este recurso está no Public Preview.
Você pode empregar uma lógica processual poderosa usando a sintaxe de script baseada no padrão SQL/PSM.
Qualquer script SQL consiste de e começa com um bloco de instruções compostas (BEGIN ... END).
Uma instrução composta começa com uma seção para declarar variáveis locais, condições definidas pelo usuário e manipuladores de condições, que são usados para capturar exceções.
Segue-se o corpo da declaração composta, que consiste em:
- As instruções de controle de fluxo incluem loops sobre expressões de predicados loops FOR sobre resultados de consulta, lógica condicional como IF e CASEe meios para quebrar loops como LEAVE e ITERAR.
- Instruções DDL como
ALTER,CREATE,DROP. - Instruções DCL (Controle de Dados), como GRANT e REVOKE.
- Instruções DML INSERT, UPDATE, DELETEe MERGE.
- Consultas que retornam conjuntos de resultados para o invocador do script.
- SET instruções para definir variáveis locais, bem como variáveis de sessão.
- A declaração EXECUTE IMMEDIATE.
- Instruções compostas aninhadas, que fornecem escopos aninhados para variáveis, condições e manipuladores de condições.
Passando dados entre o invocador e a instrução composta
Há duas maneiras de passar dados de e para um script SQL:
- Use variáveis de sessão para passar valores escalares ou pequenos conjuntos de matrizes ou mapas de um script SQL para outro.
- Use marcadores de parâmetro para passar valores escalares ou pequenos conjuntos de matrizes ou dados de mapa de um widget de bloco de anotações, Python ou outra linguagem para o Script SQL.
Escopo variável
As variáveis declaradas dentro de uma instrução composta podem ser referenciadas em qualquer expressão dentro de uma instrução composta. O Databricks resolve identificadores do escopo mais interno para fora, seguindo as regras descritas em Resolução de Nomes. Você pode usar a instrução composta opcional rótulos para desambiguar nomes de variáveis duplicados.
Tratamento de condições
A Script SQL oferece suporte a manipuladores de condições, que são usados para intercetar e processar exceções durante o processamento do script SQL relacionado a EXIT.
No manipulador de condições, você pode RESIGNAL a exceção original, SIGNAL uma nova exceção ou sair da instrução composta sem uma exceção.
Os manipuladores de condições podem ser definidos para lidar com três classes distintas de condições:
Uma ou mais condições nomeadas que podem ser uma classe de erro específica definida pelo Databricks, como
DIVIDE_BY_ZEROou uma condição declarada pelo usuário. Estes manipuladores lidam com estas condições específicas.Um ou mais
SQLSTATEs, que podem ser gerados pelo Databricks ou por uma instrução de utilizadorSIGNAL. Esses manipuladores podem lidar com qualquer condição associada a esseSQLSTATE.Um manipulador genérico de
SQLEXCEPTIONpode capturar todas as condições que se enquadram noSQLEXCEPTION(qualquerSQLSTATEque não sejaXX***e não02***).
Os itens a seguir são usados para decidir qual manipulador de condição se aplica a uma exceção. Este manipulador de condição é chamado de manipulador mais apropriado:
Um manipulador de condição não pode se aplicar a qualquer instrução definida em seu próprio corpo ou ao corpo de qualquer manipulador de condição declarado na mesma instrução composta.
Os manipuladores de condição aplicáveis definidos na instrução composta mais interna dentro da qual a exceção foi levantada são apropriados.
Se mais de um manipulador apropriado estiver disponível, o manipulador mais específico será o mais apropriado. Por exemplo, um manipulador em uma condição nomeada é mais específico do que um em um
SQLSTATEnomeado. Um manipulador deEXCEPTIONgenérico é o menos específico.
A menos que um manipulador SIGNALou RESIGNALdefina uma condição sua, o resultado de um manipulador de condição é executar a instrução que segue a instrução composta que declarou o manipulador para ser executado a seguir.
Procedimentos armazenados SQL
Importante
Este recurso está no Public Preview.
Aplica-se a:
para Databricks SQL
para Databricks Runtime 17.0 e superiores
Usando a instrução CREATE PROCEDURE , você pode persistir um script SQL no Unity Catalog. Em seguida, você pode acessar GRANT o procedimento para outras entidades. Os principais podem então utilizar a instrução CALL para invocar o procedimento.
Lista de instruções de fluxo de controle
Segue-se uma lista de instruções de fluxo de controlo suportadas:
- declaração CASE
- Instrução composta BEGIN END
- FOR declaração
- GET DIAGNÓSTICOS declaração
- DECLARAÇÃO IF THEN ELSE
- Declaração ITERATE
- Declaração LEAVE
- instrução LOOP
- REPETIR
- Declaração RESIGNAL
- Declaração SIGNAL
- ENQUANTO declaração