Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est disponible en préversion publique.
S’applique à :
Databricks SQL
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
-
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_FOUNDerreur est générée. -
Pour les arguments attribués aux
INparamètres, toute expression d’un type qui peut être convertie en paramètre ou leDEFAULTmot clé. PourOUTetINOUTles 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
OUTetINOUTrestent 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ètreDATE. -
Nom non qualifié d’un paramètre auquel le
argExprest 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