Un curseur portant le nom existe déjà - SQL Server 2008
J'ai un trigger qui est utilisé pour effectuer certaines tâches d'audit lorsque des modifications sont apportées à une table. Au sein de ce déclencheur, il y a une boucle WHILE, et dans la boucle il y a un curseur qui est déclaré, utilisé, fermé, puis libéré avant la prochaine itération de la boucle.
Quand j'ai appeler une procédure stockée qui modifie la table et à son tour, provoque l'activation du déclencheur, et je le fais à partir de l'intérieur de la Gestion du Studio, tout fonctionne comme prévu.
Toutefois, lorsque cette procédure stockée est appelée à partir de mon application web Java, j'obtiens une erreur: "Un curseur avec le nom "existe déjà".
Est-il une raison pourquoi cette procédure stockée serait de travailler quand je l'exécuter manuellement, et ne fonctionne pas lorsqu'il est exécuté à partir de l'application web?
source d'informationauteur t0mm0d
Vous devez vous connecter pour publier un commentaire.
Il semble que vous pourriez être en utilisant les curseurs, ce qui pourrait causer des problèmes de ce genre.
Si vous devez utiliser des curseurs:
Si vous le pouvez, utilisez les curseurs LOCAUX dans tout votre code.
par exemple, déclarer le curseur à l'aide de la "LOCALE" mot-clé, comme ceci:
Vous pouvez également essayer cette
Sonne un peu comme il est appelé par plusieurs threads et, par conséquent, il existe déjà lors de la deuxième thread tente d'utiliser le nom. Vous pouvez essayer de donner un nom à votre curseur de façon dynamique avec un GUID dans le nom etc. Je ne recommanderais pas cette approche.
Je vous suggère de supprimer le curseur de votre code de déclencheur, si possible en faveur d'un ensemble. Les frais généraux de l'utilisation d'un curseur à l'intérieur de la gâchette doit être assez élevé.