Compartilhar via


Scripts SQL

Aplica-se a:verificação marcada como sim Databricks SQL verificação marcada como sim Databricks Runtime 16.3 e superior

Importante

Esse recurso está em Visualização Pública.

Você pode empregar uma lógica de procedimento avançada usando a sintaxe de script baseada em padrão do SQL/PSM. Qualquer script SQL consiste em um bloco de instrução composto (BEGIN ... END) e começa com ele. 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ção, que são usados para capturar exceções. Isso é seguido pelo corpo da instrução composta, que consiste em:

  • As instruções de controle de fluxo incluem loops sobre expressões de predicado, loops FOR sobre resultados de consulta, lógica condicional como IF e CASE, e meios de sair de loops como LEAVE e ITERATE.
  • Instruções DDL, como ALTER, CREATE, DROP.
  • Instruções DCL (Controle de Dados) como GRANT e REVOKE.
  • Instruções DML INSERT, UPDATE, DELETE e 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 instrução EXECUTE IMMEDIATE.
  • Instruções compostas aninhadas, que fornecem escopos aninhados para variáveis, condições e manipuladores de condição.

Como transmitir 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 mapear dados de um widget de notebook, Python ou outra linguagem para o Script SQL.

Definição de escopo de variável

Variáveis declaradas em uma instrução composta podem ser referenciadas em qualquer expressão dentro de uma instrução composta. O Databricks resolve os identificadores do escopo mais internos para fora, seguindo as regras descritas em Resolução de nomes. Você pode usar os rótulos de instrução composta opcionais para remover a ambiguidade de nomes de variáveis duplicados.

Tratamento de condição

Os scripts SQL dão suporte a manipuladores de condição, que são usados para interceptar e processar exceções para o processamento de EXIT do script SQL. Dentro do manipulador de condição, você pode usar RESIGNAL na exceção original, SIGNAL em uma nova exceção ou sair da instrução composta sem uma exceção.

Os manipuladores de condição 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 definida pelo Databricks específica, como DIVIDE_BY_ZERO ou uma condição declarada pelo usuário. Esses manipuladores processam essas condições específicas.

  • Um ou mais SQLSTATEs, que podem ser gerados pelo Databricks ou por uma instrução de usuário SIGNAL. Esses manipuladores podem lidar com qualquer condição associada a esse SQLSTATE.

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

As opções a seguir são usadas para decidir qual manipulador de condição se aplica a uma exceção. Esse manipulador de condição é chamado de manipulador mais apropriado:

  • Um manipulador de condição não pode se aplicar a nenhuma instrução definida no próprio corpo ou no corpo de qualquer manipulador de condição declarado na mesma instrução composta.

  • Os manipuladores de condição aplicável definidos na instrução composta mais interna na qual a exceção foi gerada 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 SQLSTATE nomeado. Um manipulador genérico EXCEPTION é o menos específico.

A menos que um manipulador use SIGNALs ou RESIGNALs em uma condição própria, o resultado de um manipulador de condição é executar a instrução após a instrução composta que declarou o manipulador para execução em seguida.

Procedimentos armazenados do SQL

Importante

Esse recurso está em Visualização Pública.

Aplica-se a: verificação marcada sim Databricks SQL check marked yes Databricks Runtime 17.0 and above

Usando a instrução CREATE PROCEDURE, você pode persistir um Script SQL no Catálogo do Unity. Em seguida, GRANT você pode conceder acesso ao procedimento a outros principais. Esses principais podem então usar a instrução CALL para invocar o procedimento.

Lista de instruções de fluxo de controle

Veja a seguir uma lista das instruções de fluxo de controle suportadas: