Bonjour,

Il me semble avoir un problème de curseur lors de l'appel de ma procédure stockée. Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.