Partager via


APPELER

Important

Cette fonctionnalité est disponible en préversion publique.

S’applique à :coche oui Databricks SQL coche oui Databricks Runtime 17.0 et versions ultérieures

Appelle une procédure stockée par nom et transmet des arguments vers et depuis la procédure.

Les appels de procédure peuvent être imbriqués jusqu’à 64 niveaux.

Note

L’instruction CALL n’est pas prise en charge dans ODBC.

Syntaxe

CALL procedure_name( [ argument [, …] ]
                     [ namedParameter => argument ] [, ...] )

Paramètres

  • procedure_name

    Nom de la procédure à appeler. Le nom de la procédure peut éventuellement être qualifié avec un nom de schéma. Si le nom n’est pas qualifié, la procédure est résolue dans le schéma actuel. Si la procédure n’existe pas, une ROUTINE_NOT_FOUND erreur est générée.

  • argument

    Pour les arguments attribués aux IN paramètres, toute expression d’un type qui peut être convertie en paramètre ou le DEFAULT mot clé. Pour OUT et INOUT les paramètres, l’argument doit être une variable de session ou une variable locale.

    Si la procédure échoue, les valeurs des arguments des paramètres OUT et INOUT restent inchangées.

    Note

    L’argument doit correspondre au type de données du paramètre. Cela inclut la spécification, par exemple : DATE'2015-01-01', au lieu de '2015-01-01' pour un paramètre DATE.

  • namedParameter

    Nom non qualifié d’un paramètre auquel le argExpr est affecté.

Le nombre d’arguments ne doit pas être supérieur au nombre de paramètres spécifiés pour la procédure. Si vous spécifiez moins d’arguments qu'il n'y a de paramètres, les paramètres doivent être définis avec des valeurs DEFAULT.

Exemples

> 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