Bonjour,

J'ai un petit problème en T-SQL. Je dispose d'une requête dynamique c'est à dire que le nombre de champs dans la clause SELECT est en fonction de ce qu'a sélectionné l'utilisateur. J'ai réussi de même à créer un curseur dynamique c'est à dire que j'ai une variable qui contient les variables des champs du SELECT.


Imaginons que l'utilisateur sélectionne les champs : matricule, nom, prenom
la variable du curseur @column contiendra @matricule, @nom, @prenom.
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
 
         SET @column = '@'+ @column
	 SET @columnDeclare = REPLACE(@column,',',' NVARCHAR(MAX),')
	 SET @columnDeclare = 'DECLARE ' + @columnDeclare + ' NVARCHAR(MAX)'
         SET @column = REPLACE(@ai_column,',',',@')
         SET @requete = 'SELECT ' + @ai_column + ' FROM v_a_elementFixeIntervenants  WHERE Matricule '
	+ ' IN (SELECT Matricule '
	+ ' FROM f_a_elementFixeIntervenants('''+ @ai_societe + ''',''' + @ai_StringdateD + ''',''' + @ai_StringdateF + ''')) '
	+ ' AND Date_d_entree >= ISNULL(''' + @ai_StringdateD + ''', Date_d_entree) '
	+ ' AND Date_d_entree <= ISNULL(''' + @ai_StringdateF + ''', Date_d_entree) '
	+ ' AND date_debut_situation >= ISNULL(''' + @ai_StringdateD + ''', date_debut_situation) '
	+ ' AND date_debut_situation <= ISNULL(''' + @ai_StringdateF + ''', date_debut_situation) '
	+ ' AND Type_Intervenant = ''INT'' '
	+ ' ORDER BY Matricule, Date_debut_situation , Societe ASC '
	SET @curseur = ' DECLARE cursorSociete CURSOR FOR ' + @requete
	-- Ouverture du curseur
	SET @curseur = @curseur + ' OPEN cursorSociete '
	-- Parcours du curseur
	SET @curseur = @curseur + ' FETCH FROM cursorSociete INTO ' + @column
	SET @curseur = @curseur + ' WHILE @@fetch_Status = 0 '
	SET @curseur = @curseur + ' BEGIN '
--------------------------
--Comparaison des variable contenue dans @column
--------------------------
	SET @curseur = @curseur + ' FETCH FROM cursorSociete '
	SET @curseur = @curseur + ' END '
	SET @curseur = @curseur + ' DEALLOCATE cursorSociete '
C'est la que mon problème arrive. Comment alors que @matricule, @nom, @prenom sont dynamique je peux faire des comparaisons entre la valeur de @matricule et la valeur n+1 de @matricule?



D'avance merci pour votre aide