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
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 secção para declarar variáveis locais, cursores, condições definidas pelo utilizador e manipuladores de condições, que são usados para detetar 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.
- Processamento de cursor com instruções OPEN,FETCH e CLOSE (Databricks Runtime 18.1 e superior).
- 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, cursores, 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 de variáveis e cursor
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.
Os cursores declarados dentro de uma instrução composta podem ser referenciados em OPEN, FETCH, e CLOSE as instruções dentro dessa instrução composta. Tal como as variáveis, pode usar rótulos opcionais de instruções compostas para desambiguar nomes de cursor duplicados em escopos aninhados.
Tratamento de condições
SQL Scripting suporta manipuladores de condições, que são usados para intercetar e processar exceções à EXIT instrução composta ou CONTINUE à execução (Databricks Runtime 18.1 e superior).
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***).Um
NOT FOUNDhandler apanha todas as condições com a classe'02xxx'SQLSTATE , que inclui a condição CURSOR_NO_MORE_ROWS levantada ao buscar para além do final de um conjunto de resultados de cursor (Databricks Runtime 18.1 e superior).
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.
O resultado de um manipulador de condições é o seguinte:
- Um handler executa a sua instrução e depois sai da instrução composta que declarou
EXITo handler. Todos os cursores abertos dentro dessa instrução composta e instruções compostas aninhadas estão implicitamente fechados. - Um
CONTINUEhandler executa a sua instrução e depois continua a execução com a instrução seguinte à que elevou a condição. - A menos que um manipulador
SIGNALouRESIGNALdefina 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
- Declaração FINAL
- Instrução composta BEGIN END
- Instrução FETCH
- FOR declaração
- GET DIAGNÓSTICOS declaração
- DECLARAÇÃO IF THEN ELSE
- Declaração ITERATE
- Declaração LEAVE
- instrução LOOP
- Declaração ABERTA
- REPETIR
- Declaração RESIGNAL
- Declaração SIGNAL
- ENQUANTO declaração
Lista de Instruções do Cursor
As seguintes instruções de cursor são suportadas no Databricks Runtime 18.1 e superiores. Os cursores são declarados na instrução composta.