Compartir a través de


LLAMAR

Importante

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

Se aplica a:seleccionado Databricks SQL seleccionado 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

  • procedure_name

    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_FOUND error.

  • argumento

    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 clave DEFAULT. Para OUT los parámetros y INOUT , 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 OUT parámetros y INOUT permanecen 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 un DATE parámetro .

  • namedParameter

    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