CALL

Appelle une procédure stockée.

Voir aussi :

CREATE PROCEDURE, SHOW PROCEDURES

Syntaxe

CALL <procedure_name> ( [ [ <arg_name> => ] <arg> , ... ] )
  [ INTO :<snowflake_scripting_variable> ]
Copy

Paramètres requis

procedure_name ( [ [ arg_name => ] arg , ... ] )

Spécifie l’identificateur (procedure_name) pour la procédure à appeler et pour tout argument d’entrée.

Vous pouvez spécifier les arguments d’entrée soit par leur nom (arg_name => arg) , soit par leur position (arg).

Remarques :

  • Vous devez spécifier tous les arguments soit par leur nom, soit par leur position. Vous ne pouvez pas spécifier certains arguments par leur nom et d’autres par leur position.

    Lorsque vous spécifiez un argument par son nom, vous ne pouvez pas utiliser de guillemets doubles autour du nom de l’argument.

  • Si deux fonctions ou deux procédures ont le même nom, mais des types d’arguments différents, vous pouvez utiliser les noms des arguments pour spécifier la fonction ou la procédure à exécuter, si les noms des arguments sont différents. Reportez-vous à Surcharge de procédures et de fonctions.

Paramètres facultatifs

INTO :snowflake_scripting_variable

Définit la variable Exécution de scripts Snowflake spécifiée dans la valeur de retour de la procédure stockée.

Notes sur l’utilisation

  • Les noms de procédure ne sont pas nécessairement uniques dans le schéma ; les procédures stockées sont identifiées et résolues à l’aide de leurs types d’arguments et de leurs noms (les procédures stockées peuvent être surchargées).

  • En dehors d’un bloc Exécution de scripts Snowflake, la valeur renvoyée par la procédure stockée ne peut pas être utilisée, car l’appel ne peut pas faire partie d’une expression.

    Dans un bloc Exécution de scripts Snowflake, vous pouvez spécifier INTO :snowflake_scripting_variable pour capturer la valeur de retour de la procédure stockée dans une variable Exécution de scripts Snowflake.

  • Les procédures stockées ne sont pas atomiques ; si une instruction d’une procédure stockée échoue, les autres instructions de la procédure stockée ne sont pas nécessairement annulées. Pour des informations sur les procédures et les transactions stockées, voir Gestion des transactions.

  • Vous pouvez également créer et appeler une procédure anonyme en utilisant CALL (avec procédure anonyme).

Exemples

L’exemple suivant appelle une procédure stockée nommée sv_proc1 et transmet un littéral de chaîne et un nombre comme arguments d’entrée : L’exemple précise les arguments par position :

CALL sv_proc1('Manitoba', 127.4);
Copy

Vous pouvez également spécifier les arguments par leur nom :

CALL sv_proc1(province => 'Manitoba', amount => 127.4);
Copy

L’exemple suivant montre comment définir et transmettre une variable de session comme argument d’entrée dans une procédure stockée :

SET Variable1 = 49;
CALL sv_proc2($Variable1);
Copy

Voici un exemple de bloc Exécution de scripts Snowflake qui capture la valeur de retour d’une procédure stockée dans une variable Exécution de scripts Snowflake.

DECLARE
  ret1 NUMBER;
BEGIN
  CALL sv_proc1('Manitoba', 127.4) into :ret1;
  RETURN ret1;
END;
Copy

Remarque : si vous utilisez SnowSQL ou l”Classic Console, utilisez cet exemple à la place (voir Utilisation d’Exécution de scripts Snowflake dans SnowSQL et l”Classic Console) :

EXECUTE IMMEDIATE $$
DECLARE
  ret1 NUMBER;
BEGIN
  CALL sv_proc1('Manitoba', 127.4) into :ret1;
  RETURN ret1;
END;
$$
;
Copy

Pour des exemples plus détaillés de création et d’appel de procédures stockées, voir Travailler avec des procédures stockées.