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
| 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 :
| 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
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();MYDB.MYSCH(USER)=> SELECT updateacct();
MYDB.MYSCH(USER)=> SELECT inventorysearch(umbrellas);