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) :

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
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.

Pourriez-vous m'aider à m'affranchir de l'utilisation des curseurs ?

D'avance Merci de votre aide.