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