Les commandes CALL et EXEC[UTE [PROCEDURE]]

Utilisez la commande CALL, la commande EXEC, la commande EXECUTE ou la commande EXECUTE PROCEDURE pour invoquer une procédure stockée sur un hôte.

Les commandes CALL, EXEC, EXECUTE, EXECUTE PROCEDURE sont identiques dans leur comportement, leurs entrées et leurs sorties. Les différentes commandes assurent la compatibilité avec les autres méthodes d'invocation du langage procédural. Vous pouvez également utiliser la commande SELECT pour invoquer une procédure stockée.

Synopsis

CALL procedure_name(arguments)
EXEC procedure_name(arguments)
EXECUTE procedure_name(arguments)
EXECUTE PROCEDURE procedure_name(arguments)
SELECT procedure_name(arguments)

Entrées

Les commandes CALL et EXEC[UTE [PROCEDURE] prennent les entrées suivantes :
Tableau 1. CALL et EXEC[UTE [PROCEDURE]] entre
Entrée Descriptif
PROCEDURE_NAME Le nom de la procédure stockée que vous souhaitez invoquer. Si vous n'indiquez qu'un nom de procédure, le système effectue une recherche dans la base de données et le schéma actuels, puis dans le PATH pour trouver la procédure.

Vous pouvez spécifier un nom d'objet entièrement qualifié pour exécuter une procédure définie dans une base de données ou un schéma différent.

arguments Spécifie une liste d'arguments constants ou littéraux pour la procédure. Les arguments peuvent être des résultats de fonctions lorsque celles-ci ne prennent que des arguments constants ou littéraux.

Sorties

Les commandes CALL et EXEC[UTE [PROCEDURE] ont les résultats suivants :

Tableau 2. CALL et EXEC[UTE [PROCEDURE]] produisent
Sortie Descriptif
ERREUR : EXECUTE PROC : Permission refusée. Cette erreur indique que le compte d'utilisateur actuel n'a pas le droit d'exécuter la procédure stockée.
ERREUR : La fonction'NAME(ARGS)' n'existe pas

Impossible d'identifier une fonction qui satisfasse les types d'arguments

Il se peut que vous deviez ajouter des codifications explicites

Ce message indique que l'utilisateur a saisi des arguments incorrects pour la procédure stockée. Une procédure de ce nom existe, mais elle attend des arguments d'entrée différents.

Descriptif

Privilèges requis
Pour invoquer une procédure stockée, vous devez répondre à l'un des critères suivants :
  • Vous devez disposer du privilège Execute sur l'objet PROCEDURE.
  • Vous devez disposer du privilège Exécuter sur la procédure spécifique.
  • Vous devez vous approprier la procédure.
  • Vous devez être l'utilisateur administrateur de la base de données ou posséder la base de données actuelle ou le schéma actuel sur les systèmes qui prennent en charge plusieurs schémas.

Utilisation

Les exemples suivants donnent des exemples d'utilisation :
MYDB.MYSCH(USER)=> CALL updateacct();
MYDB.MYSCH(USER)=> EXEC schema_two.myproc();
MYDB.MYSCH(USER)=> EXECUTE sales.dev.inventorysearch(umbrellas);
MYDB.MYSCH(USER)=> EXECUTE PROCEDURE updateacct();
Vous pouvez également utiliser la commande SELECT pour exécuter une procédure ; cependant, vous ne pouvez pas spécifier une clause FROM. Par exemple :
MYDB.MYSCH(USER)=> SELECT updateacct();
MYDB.MYSCH(USER)=> SELECT inventorysearch(umbrellas);