J'utilise Informix ...
Je ne sais pas comment je l'ai fait, mais il y a deux procédures avec le même nom dans ma base de données. Quand j'essaie de les supprimer avec un
DROP PROCEDURE myProc;
alors je reçois un message d'erreur
ERROR: Routine (add_adr_trigger_row) ambiguous - more than one
routine resolves to given signature.
Error Code: -9700
Comment puis-je supprimer les procédures?
Cela se produit lorsque vous avez 2 procédures ou plus, avec le même nom, mais avec différents numéros de paramètres d'entrée.
Par exemple, vous avez créé 2 procédures:
CREATE PROCEDURE myProc(param1)
...
CREATE PROCEDURE myProc(param1, param2)
...
Pour supprimer le second, vous avez 2 options:
Le facile:
DROP PROCEDURE myProc(param1, param2);
Le difficile:
dbaccess DB -
select procname, procid, numargs from sysprocedures where procname like 'myProc';
procname myProc
procid 1
numargs 1
procname myProc
procid 2
**numargs 2**
UPDATE sysprocedures SET procname='myProcOLD' WHERE procid=2;
DROP PROCEDURE myProcOLD;
Même si la première méthode est morte simple, la première fois que j'avais appelé au milieu de la nuit pour ce même problème, j'ai choisi la seconde. Ma faute ...
Si vous savez que cela pourrait être un problème à l'avenir, vous pouvez créer votre procédure avec un nom spécifique, qui doit être unique dans toutes les procédures de la base de données.
Si vous ne savez pas que ce sera un problème lorsque vous créez la procédure, vous ne pouvez pas revenir officiellement et ajouter un nom spécifique, et vous avez un problème.
La mise à jour de sysprocedures
dans la réponse sélectionnée ne doit fonctionner que si l'utilisateur est connecté sous informix
(ou, dans le cas d'un serveur privé, le propriétaire du serveur).