Bonjour

En stage, on m'a demander de modifier certains PS qui pouvait être plus rapide, dans la liste y en a une qui me pose probleme

Cette Ps est actuellement ecrite comme tel
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
 
DECLARE @TableTemp as Table (CodeDocument int ) 
DECLARE @TableTempo as Table (Code int )         
 
         INSERT INTO @TableTemp
         SELECT Document
         FROM dbo.TABLE1  
         JOIN dbo.TABLE2      ON Numero= Nums
         WHERE Action = @Num
 
         INSERT INTO @TableTempo
         SELECT distinct Code
         FROM Table3   
         WHERE  CodeEnsemble = @Code
 
 -- Déclaration d'un curseur 
      DECLARE c_curseur CURSOR 
      SELECT CodeDocument FROM @TableTemp
      OPEN c_curseur
      FETCH NEXT FROM c_curseur INTO @TCodeDoc
 
      WHILE @@FETCH_STATUS = 0 BEGIN            
            INSERT INTO MaTableInsert (Colonne1, Colonne2, Colonne3, Colonne4) 
 
            SELECT Code, @CodeDoc, GETDATE(), @Pers from @TableTempo
            WHERE CodeEncadre not in (select Code FROM dbo.Table3 
                                                      JOIN dbo.Table  ON Num = Code
                                                      WHERE CodeEnsemble = @Code)  
 
         FETCH NEXT FROM c_curseur INTO @TCodeDoc
      END
      CLOSE c_curseur
      DEALLOCATE c_curseur
J'ai remplacé le nom de mes table par souci de confidentialité, mais l'idée est que j'ai 2 tables temporaires qui sont utilisés dans le curseur pour faire des insertions dans ma table. Je souhaiterais donc reussir a faire ces insertions sans passé par le curseur mais je ne sais pas comment réussir l'insertion sans parcourir une des deux tables ?

L'idée doit etre simple mais ne me vient pas comme ça, merci pour vos informations.