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
Invoca un procedimiento almacenado mediante su nombre y pasa argumentos de entrada y salida al procedimiento.
Las llamadas a procedimientos se pueden anidar hasta 64 niveles.
Nota:
La instrucción CALL no se admite en ODBC.
Sintaxis
CALL procedure_name( [ argument [, …] ]
[ namedParameter => argument ] [, ...] )
Parámetros
-
Nombre del procedimiento que se va a invocar. El nombre del procedimiento puede calificarse opcionalmente con un nombre de esquema. Si el nombre no está calificado, el procedimiento se resuelve en el esquema actual. Si el procedimiento no existe, se genera un
ROUTINE_NOT_FOUNDerror. -
Para los argumentos asignados a los parámetros
IN, cualquier expresión de un tipo que se pueda convertir al tipo del parámetro, o la palabra claveDEFAULT. ParaOUTlos parámetros yINOUT, el argumento debe ser una variable de sesión o una variable local.Si se produce un error en el procedimiento, los valores de argumento de los
OUTparámetros yINOUTpermanecen sin cambios.Nota:
El argumento debe coincidir con el tipo de datos del parámetro . Esto incluye especificar, por ejemplo:
DATE'2015-01-01', en lugar de'2015-01-01'para unDATEparámetro . -
Nombre incompleto de un parámetro al que
argExprse asigna.
El número de argumentos no debe ser mayor que el número de parámetros especificados para el procedimiento.
Si especifica menos argumentos de los que hay parámetros, los parámetros deben definirse con DEFAULT valores.
Ejemplos
> CREATE OR REPLACE PROCEDURE area_of_rectangle
(IN x INT, IN y INT, OUT area INT, INOUT acc INT)
LANGUAGE SQL
SQL SECURITY INVOKER
AS BEGIN
SET area = x * y;
SET acc = acc + area;
SELECT 'Area of rectangle is: ' || area;
END;
-- Session varables to handle OUT and INOUT parameters
> DECLARE area INT;
> DECLARE acc INT DEFAULT 10;
-- Invocation by position
> CALL area_of_rectangle(5, 10, area, acc);
Area of rectangle is: 50
> SELECT area, acc;
area acc
—--- —--
50 60
-- Invocation by name
> CALL area_of_rectangle(y => 10, x => 5, area => area, acc => acc);
Area of rectangle is: 50
> SELECT area, acc;
area acc
—--- —--
50 120