Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Esta característica está en versión preliminar pública.
Se aplica a:
Databricks SQL Databricks Runtime 17.0 y versiones posteriores, marcado como verificado ![]()
Crea un procedimiento en el Catálogo de Unity que toma o modifica argumentos, ejecuta un conjunto de instrucciones SQL y, opcionalmente, devuelve un conjunto de resultados.
Además de la invocación de parámetros posicionales, también puede invocar procedimientos mediante la invocación de parámetros con nombre.
Sintaxis
CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]
procedure_name ( [ procedure_parameter [, ...] ] )
[ characteristic [...] ]
AS compound_statement
procedure_parameter
[ IN | OUT | INOUT ] parameter_name data_type
[ DEFAULT default_expression ] [ COMMENT parameter_comment ]
characteristic
{ LANGUAGE SQL |
SQL SECURITY INVOKER |
NOT DETERMINISTIC |
COMMENT procedure_comment |
DEFAULT COLLATION UTF8_BINARY |
MODIFIES SQL DATA }
Parámetros
O REEMPLAZAR
Si se especifica, se reemplaza un procedimiento con el mismo nombre. No se puede reemplazar una función existente por un procedimiento. No se puede especificar este parámetro con
IF NOT EXISTS.SI NO EXISTE
Si se especifica, crea el procedimiento solo cuando ya no existe un procedimiento con esa nota. Si existe un procedimiento con el mismo nombre, la instrucción se ignora. No se puede especificar este parámetro con
OR REPLACE.-
Nombre del procedimiento. Opcionalmente, puede calificar el nombre del procedimiento con un nombre de esquema. Si el nombre no está cualificado, el procedimiento permanente se crea en el esquema actual.
El nombre del procedimiento debe ser único para todas las rutinas (procedimientos y funciones) del esquema.
procedure_parameter
Especifica un parámetro del procedimiento.
-
El nombre del parámetro debe ser único dentro del procedimiento.
IN, INOUT o OUT
Opcionalmente, describe el modo del parámetro .
EN
Define un parámetro de solo entrada. Este es el valor predeterminado.
INOUT
Define un parámetro que acepta un argumento input-output. Si el procedimiento se completa sin un error no controlado, devolverá el valor final del parámetro como salida.
OUT
Define un parámetro de salida. El parámetro se inicializa en
NULLy, si el procedimiento se completa sin un error no controlado, devolverá el valor final del parámetro como salida.
-
Cualquier tipo de datos admitido.
PREDETERMINADO default_expression
Un valor predeterminado opcional que se usará cuando una invocación de función no asigne un argumento al parámetro.
default_expressiondebe ser convertible paradata_type. La expresión no debe hacer referencia a otro parámetro ni contener una subconsulta.Cuando se especifica un valor predeterminado para un parámetro, todos los parámetros siguientes también deben tener un valor predeterminado.
DEFAULTno es compatible con parámetros deOUT.COMENTARIO comentario
Descripción opcional del parámetro.
commentdebe ser un literal deSTRING.
-
-
Instrucción compuesta de SQL (
BEGIN ... END) con la definición del procedimiento SQL.Cuando se crea el procedimiento, se valida la corrección sintáctica. El cuerpo del procedimiento no se valida para verificar su corrección semántica hasta que se invoca el procedimiento.
característica
La característica
SQL SECURITY INVOKERyLANGUAGE SQLson necesarias. Todos los demás son opcionales. Puede especificar cualquier número de características en cualquier orden, pero puede especificar cada cláusula solo una vez.LANGUAGE SQL
Lenguaje de la implementación de la función.
INVOCADOR DE SEGURIDAD DE SQL
Especifica que las instrucciones SQL del cuerpo del procedimiento se ejecutarán bajo la autoridad del usuario invocando el procedimiento.
Al resolver las relaciones y rutinas dentro del cuerpo del procedimiento, Azure Databricks usa el catálogo actual y el esquema actual en el momento de la invocación.
NO ES DETERMINISTA
Se supone que un procedimiento no determinista, lo que significa que puede devolver resultados diferentes en cada invocación, incluso cuando se llama con los mismos argumentos.
procedure_comment COMENTARIO
Un comentario sobre el procedimiento.
procedure_commentdebe serSTRINGliteral. El valor predeterminado esNULL.INTERCALACIÓN PREDETERMINADA UTF8_BINARY
Se aplica a:
Databricks SQL
Databricks Runtime 17.1 y versiones posterioresFuerza la intercalación predeterminada del procedimiento a
UTF8_BINARY. Esta cláusula es obligatoria si el esquema en el que se crea el procedimiento tiene una intercalación predeterminada distinta deUTF8_BINARY. La intercalación predeterminada del procedimiento se usa como intercalación predeterminada para los parámetros del procedimiento y como intercalación predeterminada para todos los literales de cadena y variables locales del cuerpo del procedimiento.MODIFICA DATOS SQL
Se supone que un procedimiento modifica los datos SQL.
Ejemplos
-- Demonstrate INOUT and OUT parameter usage.
> CREATE OR REPLACE PROCEDURE add(x INT, y INT, OUT sum INT, INOUT total INT)
LANGUAGE SQL
SQL SECURITY INVOKER
COMMENT 'Add two numbers'
AS BEGIN
SET sum = x + y;
SET total = total + sum;
END;
> DECLARE sum INT;
> DECLARE total INT DEFAULT 0;
> CALL add(1, 2, sum, total);
> SELECT sum, total;
3 3
> CALL add(3, 4, sum, total);
7 10
-- The last executed query is the result set of a procedure
> CREATE PROCEDURE greeting(IN mode STRING COMMENT 'informal or formal')
LANGUAGE SQL
SQL SECURITY INVOKER
AS BEGIN
SELECT 'Hello!';
CASE mode WHEN 'informal' THEN SELECT 'Hi!';
WHEN 'formal' THEN SELECT 'Pleased to meet you.';
END CASE;
END;
> CALL greeting('informal');
Hi!
> CALL greeting('formal');
Pleased to meet you.
> CALL greeting('casual');
Hello!