Bonjour,
le titre n'est pas très explicite, alors voila ma problématique :
j'ai une table : Matable
dans cette table je dois mettre à jour un champs : poids
dans cette table il y a un champs valeur.
pour une ligne n, poid(n) = valeur(n)-valeur(n-1).
exemple
VALEUR POIDS
----------------
4 null
1 -3 (1-4)
0 -1 (0-1)
-2 -2 (-2-0)
etc...
Voici mon code
1 - mon code ne fonctionne pas (mais ça à la limite c'st pas le plus grave)
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 DECLARE CURSOR CCur IS SELECT a.valeur FROM MaTable a FOR UPDATE MaTable.Poid; valeur_courrant MaTable.valeur%TYPE; valeur_precedent MaTable.valeur%TYPE; BEGIN OPEN CCur; LOOP FETCH CCur INTO valeur_courrant; EXIT WHEN CCur%NOTFOUND; UPDATE MaTable SET poids=valeur_courrant-valeur_precedent WHERE CURRENT OF CCur; valeur_precedent:=valeur_courrant; END LOOP; CLOSE CCur; END;
2 - Estce que la methode que j'emploi est "la meilleur"
3 - j'avais pensé a utiliser des collections, mais je n'y suis pas arrivé
Donner moi votr avis svp
Merci
Partager