Bonjour à tous,
Voilà peu de temps que j'utilise le T-SQL , et je me retrouve bloqué sur le sujet suivant : j'ai créé une procédure stockée avec des curseurs et je trouve que le temps d'exécution est trop long.
Après avoir regardé sur internet et google, j'ai vu des solutions qui permettent de s'affranchir de l'utilisation des curseurs, qui sont gourmands en ressources (en utilisant la condition while exists) ,mais je n'arrive pas à l'appliquer dans mon cas (j'ai les "mauvaises" habitudes du développement procédurale -> opérations itératives) :
J'utilise le même genre de code pour remplir d'autres colonnes de la table @ReturnTable dans la même procédure stockée, également avec des curseurs, ce qui doit encore alourdir le temps de traitement.
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 BEGIN TRANSACTION DECLARE Curseur CURSOR FOR SELECT Nom, COUNT(NumeroIntervention), FluxID FROM @table_temporaire GROUP BY Nom, FluxID OPEN Curseur FETCH NEXT FROM Curseur INTO @nom, @qte, @FluxID WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO @ReturnTable(Operateur, Traites, FluxID) VALUES (@nom, @qte, @FluxID) FETCH NEXT FROM Curseur INTO @nom, @qte, @FluxID END CLOSE Curseur DEALLOCATE Curseur COMMIT TRANSACTION
Pourriez-vous m'aider à m'affranchir de l'utilisation des curseurs ?
D'avance Merci de votre aide.
Partager