Partilhar via


Scripting SQL

Aplica-se a:marcado como sim Databricks SQL marcado como sim 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_ZERO ou 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 utilizador SIGNAL. Esses manipuladores podem lidar com qualquer condição associada a esse SQLSTATE.

  • Um manipulador genérico de SQLEXCEPTION pode capturar todas as condições que se enquadram no SQLEXCEPTION (qualquer SQLSTATE que não seja XX*** e não 02***).

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 de EXCEPTION gené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: sim, marcado para Databricks SQL sim, marcado 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: