[SQL Server 2000] Problème de curseur dans une procédure stockée
Bonjour,
Il me semble avoir un problème de curseur lors de l'appel de ma procédure stockée. Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
CREATE PROCEDURE nom_proc
@premierParam bigint,
@deuxiemeParam smallint,
--etc.
AS
DECLARE
@supNumeroT1 bigint
DECLARE
@supNumeroT2 int
DECLARE
Curseur_supNumeroT1 CURSOR FOR
SELECT numeroT1
FROM audit_T1
DECLARE
Curseur_supNumeroT2 CURSOR FOR
SELECT numeroT2
FROM audit_T2
--On supprime en premier les enregistrements de T2.
OPEN Curseur_supNumeroT2
FETCH next FROM Curseur_supNumeroT2 INTO @supNumeroT2
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE T2
FROM T2
WHERE numeroT2=@supNumeroT2
END
CLOSE Curseur_supNumeroT2
--On supprime ensuite les enregistrements de T1 dans T1.
OPEN Curseur_supNumeroT1
FETCH next FROM Curseur_supNumeroT1 INTO @supNumeroT1
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE T1
FROM T1
WHERE numeroT1=@supNumeroT1
END
CLOSE Curseur_supNumeroT1 |
Lors de l'insertion d'enregistrements dans les tables T1 et T2, je fais appel à plusieurs procédures stockées d'insertion et je mets dans une table d'audit les identifiants des enregistrements insérés.
Seulement, si une des procédures stockées d'insertion plante, je voudrais effacer les enregistrements insérés jusque là (c'est à ça que servent les tables d'audit). Le problème, c'est que lorsque je lance cette procédure là, j'efface une seule ligne de chacune des deux tables, puis la requête continue indéfiniment (jusqu'au timeout) comme si je faisais une boucle infinie.