Bonjour,
Voila quelque jours que je sèche sur un problème.
PS je suis en SQL SERVER 2000 pour mon plus grand malheur.
Dans mon application, je dois transférer des données en mes tables fronts et mon middle office. Rien de bien difficile.
En trois instructions c'était fait.
Mais depuis peu il y a des erreurs qui survienne pendant le l'insertion qui bloc tout le transfert.
Je dois donc logger les lignes qui font ****.
A partir de la je bloque.
Code SQL : 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 SET CURSOR_CLOSE_ON_COMMIT OFF DECLARE @var as varchar(20) DECLARE KEY_Cursor CURSOR FOR SELECT maKey FROM ... OPEN KEY_Cursor; Print 'open curseur' FETCH NEXT FROM KEY_Cursor INTO @var Print 'Fetch into done' WHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRAN SET @err=0 INSERT Commande SET @err = @@ERROR IF @err <> 0 BEGIN ROLLBACK TRAN SET @nbErr = @nbErr + 1 INSERT INTO TAB_LOG FETCH NEXT FROM KEY_Cursor INTO @var CONTINUE END INSERT Article SET @err = @@ERROR IF @err <> 0 BEGIN ROLLBACK TRAN SET @nbErr = @nbErr + 1 INSERT INTO TAB_LOG FETCH NEXT FROM KEY_Cursor INTO @var CONTINUE END INSERT Livraison SET @err = @@ERROR IF @err <> 0 BEGIN ROLLBACK TRAN SET @nbErr = @nbErr + 1 INSERT INTO TAB_LOG FETCH NEXT FROM KEY_Cursor INTO @var CONTINUE END COMMIT TRANSACTION FETCH NEXT FROM KEY_Cursor INTO @var END CLOSE KEY_Cursor; DEALLOCATE KEY_Cursor; SET CURSOR_CLOSE_ON_COMMIT ON
Pour pouvoir savoir quel ligne me bloque je suis bien obliger de passer par un curseur non ?
Après mon problème actuel c'est que lorsque je commit dans mon curseur les lignes valides, il se ferme au premier COMMIT, j'ai lu sur internet que c'était un comportement normal.
J'ai donc essayé de faire des SAVE TRAN les lignes valide et de COMMIT une fois sortie de mon WHILE mais il me dit que la TRANSACTION n'existe pas.
Bref je suis pas assez calé en SQL. On m'a toujours dit que les Curseur c’était le mal et après toutes les page que je lis depuis 2 jours j'ai encore plus de raison de le croire mais la je ne vois pas comment faire autrement.
Sur ce merci d'avance pour vos propositions.
Partager