Bonjour,
Je souhaite affecter de nouvelles valeurs dans les champs d'une colonne, une boucle for each m'aurait convenue mais malheureusement comme vous le savez elle n'existe pas en SQL. C'est pourquoi que je souhaite m'orienter vers un curseur, n'ayant pas réussi avec un WHILE.
Voici la table sur laquelle je travaille
Voilà, l'idée est que la colonne RANK devienne une suite incrémentée de 1 en commençant par 1, en l’occurrence 1,2,3,4,5 pour ce cas ci. C'est essentiel pour que mon code en C# qui agit sur cette table fonctionne. Je compte faire ce cette requête une procédure stockée qui sera appelée au lancement de mon programme C# pour être toujours sur d'avoir 1,3,3,4,5 pour la colonne RANK.ID | TYPE | RANK CPVFFF00001 | 24 | 5 DOTFFF0002 | 24 | 1 DOXFF78000 | 24 | 9 XXLFRRF500 | 24 | 8 PSRRFGTF00 | 24 | 7
Voici une requête que j'ai essayée mais elle ne marche pas ! Elle ne me met que des 5 pour cette table.
Si vous avez d'autre solutions différentes que celle du curseur je suis aussi preneur !
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 DECLARE @numeroligne INT SET @numeroligne = 1 DECLARE @lignemax INT SET @lignemax = 5 DECLARE curseur_rank CURSOR FOR SELECT RANK FROM dbo.lesrank WHERE lestype='24' OPEN curseur_rank FETCH curseur_rank WHILE(@numeroligne <= @lignemax) BEGIN UPDATE dbo.lesrank SET RANK = @numeroligne SET @numeroligne=@numeroligne+1 FETCH NEXT FROM curseur_rank end
Merci d'avance
Julien
Partager