Bonjour,
Voilà, j'ai une procédure stockée qui récupère des données dans une table pour les insérées dans une autre, SIMPLE. Mais voila, quand je l'exécute il n'insert qu'une seule ligne, la première.
J'ai essayé de juste mettre un compteur pour voir si le curseur tourné normalement, et c bon, il tourne.
La requête de mon curseur est correcte.
Il a beaucoup de variable pas très importante, le plus important c'est le curseur.
MERCI.
Voici ma procédure :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 CREATE PROCEDURE insert_newid AS declare @client varchar(255); -- Nom du client declare @id char(32); -- Identifiant génèrer aléatoirement declare @id_crea char(32); -- Identifiant du créateur declare @d datetime; -- Date du jour declare @id_perm char(32); -- Identifiant de la permission declare @nl char(1); -- NOT_LOCKABLE declare @mod char(32) ; -- MODIFIED_BY_ID declare @mr varchar(8) ; -- MAJOR_REV declare @cs char(32) ; -- CURRENT_STATE declare @s varchar(32); -- STATE declare @mod_on datetime; -- MODIFIED_ON declare @nv char(1); -- NEW_VERSION declare @ic char(1); -- IS_CURRENT declare @g int; -- GENERATION declare @ir char(1); -- IS_RELEASED declare d CURSOR FOR SELECT Société FROM PLM_TEST..clients -- Curseur récupérant tous les nom des clients BEGIN -- Récupérartion de l'identifiant du créateur SET @id_crea = (SELECT [id] FROM InnovatorSolutions.innovator.[USER] WHERE [keyed_name]='Innovator Admin') -- Date du jour SET @d = GetDate(); -- Récupérartion de l'identifiant de la permission SET @id_perm = (SELECT [id] FROM InnovatorSolutions.innovator.[PERMISSION] WHERE [name]='Customer'); SET @nl='0'; -- Récupérartion de l'identifiant de l'utilisateur 'Innovator Admin' SET @mod = (SELECT [id] FROM InnovatorSolutions.innovator.[USER] WHERE [keyed_name]='Innovator Admin') SET @mr='A'; -- Récupérartion du 'CURRENT_STATE' du client 'A' pour qu'ils soient tous dans le même état SET @cs = (SELECT CURRENT_STATE FROM innovator.CUSTOMER WHERE (NAME = 'A')); SET @s='Released'; -- Date courante SET @mod_on=GetDate(); SET @nv='1'; SET @ic='1'; SET @g=1; SET @ir='1'; OPEN d FETCH NEXT FROM d INTO @client; WHILE @@FETCH_STATUS = 0 BEGIN -- Génération de l'identifiant unique SET @id= innovator.item_id(newid()); -- Insertion des données INSERT INTO InnovatorSolutions.innovator.CUSTOMER ([NAME], [ID], CREATED_BY_ID, CREATED_ON, PERMISSION_ID, CONFIG_ID,KEYED_NAME,NOT_LOCKABLE, MODIFIED_BY_ID, MAJOR_REV, CURRENT_STATE, STATE, MODIFIED_ON, NEW_VERSION, IS_CURRENT, GENERATION, IS_RELEASED) VALUES (@client, @id, @id_crea, @d, @id_perm, @id,@client,@nl, @mod,@mr,@cs,@s,@mod_on,@nv,@ic,@g,@ir); -- Passage à l'élément suivant FETCH NEXT FROM d INTO @client; END END -- Fermeture du curseur CLOSE d; -- Libération de la mémoire du curseur DEALLOCATE d; GO
Partager