Compartir a través de


Creación de scripts SQL

Se aplica a:marcado con sí Databricks SQL marcado con sí Databricks Runtime 16.3 y versiones posteriores

Importante

Esta característica está en versión preliminar pública.

Puede emplear una lógica procedimental potente mediante la sintaxis de scripting basada en estándares de SQL/PSM. Cualquier script SQL consta de e inicia con un bloque de instrucciones compuestas (BEGIN ... END). Una instrucción compuesta comienza con una sección para declarar variables locales, condiciones definidas por el usuario y controladores de condiciones, que se usan para detectar excepciones. Esto va seguido del cuerpo de la instrucción compuesta, que consta de:

  • Las instrucciones de control de flujo incluyen bucles sobre expresiones de predicado, bucles FOR sobre resultados de consulta, lógica condicional, como IF y CASE, y medios para dividir bucles como LEAVE e ITERATE.
  • Instrucciones DDL como ALTER, CREATE, DROP.
  • Instrucciones DCL (Control de datos), como GRANT y REVOKE.
  • Instrucciones DML INSERT, UPDATE, DELETE y MERGE.
  • Consultas que devuelven conjuntos de resultados al invocador del script.
  • SET instrucciones para establecer variables locales y variables de sesión.
  • La instrucción EXECUTE IMMEDIATE.
  • Instrucciones compuestas anidadas, que proporcionan ámbitos anidados para variables, condiciones y controladores de condiciones.

Pasar datos entre el invocador y la instrucción compuesta

Hay dos maneras de pasar datos a y desde un script SQL:

  • Usa variables de sesión para pasar valores escalares o pequeños conjuntos de arreglos o mapas de un script SQL a otro.
  • Use marcadores de parámetros para pasar valores escalares o pequeños conjuntos de matrices o asignar datos de un widget de cuaderno, Python u otro lenguaje al script SQL.

Ámbito de variables

Las variables declaradas dentro de una instrucción compuesta se pueden hacer referencia en cualquier expresión dentro de una instrucción compuesta. Databricks resuelve los identificadores del ámbito más interno hacia fuera, siguiendo las reglas descritas en Resolución de nombres. Use la instrucción compuesta opcional etiquetas para desambiguar los nombres de variables duplicados.

Control de condiciones

El Scripting SQL admite controladores de condición, que se utilizan para interceptar y procesar excepciones en el procesamiento EXIT del script SQL. Dentro del controlador de condiciones, puede volver a señalizar la excepción original, SEÑALIZAR una nueva excepción o salir de la instrucción compuesta sin una excepción.

Los controladores de condiciones se pueden definir para controlar tres clases distintas de condiciones:

  • Una o varias condiciones con nombre que pueden ser una clase de error específica definida por Databricks, como DIVIDE_BY_ZERO o una condición declarada por el usuario. Estos controladores manejan estas condiciones específicas.

  • Una o varias SQLSTATE, que genera Databricks o una instrucción SIGNAL de usuario. Estos controladores pueden gestionar cualquier condición asociada a ese SQLSTATE.

  • Un controlador genérico SQLEXCEPTION puede detectar todas las condiciones que entran en SQLEXCEPTION (cualquier SQLSTATE que no sea XX*** y no sea 02***).

Se utilizan los siguientes elementos para decidir qué controlador de condiciones aplicar a una excepción. Este controlador de condición se denomina controlador más adecuado:

  • Un controlador de condiciones no se puede aplicar a ninguna instrucción definida en su propio cuerpo o al cuerpo de cualquier controlador de condiciones declarado en la misma instrucción compuesta.

  • Los controladores de condición aplicables definidos en la instrucción compuesta más interna en la que se generó la excepción son adecuadas.

  • Si hay más de un controlador adecuado disponible, el controlador más específico es el más adecuado. Por ejemplo: un controlador en una condición con nombre es más específico que uno en un SQLSTATE con nombre. Un controlador genérico EXCEPTION es el menos específico.

A menos que el controlador SIGNAL o RESIGNAL su propia condición, el resultado de un controlador de condiciones será ejecutar la instrucción que siga a la instrucción compuesta que declaró que el controlador se ejecutará a continuación.

Procedimientos almacenados de SQL

Importante

Esta característica está en versión preliminar pública.

Se aplica a: marcado como sí Databricks SQL marcado como sí Databricks Runtime 17.0 y posteriores

Con la instrucción CREATE PROCEDURE , puede conservar un script SQL en el catálogo de Unity. Después, puede conceder el acceso al procedimiento a otras entidades de seguridad. Luego, esos principales pueden usar la instrucción CALL para invocar el procedimiento.

Lista de sentencias de flujo de control

A continuación se muestra una lista de instrucciones de flujo de control admitidas: