Bonjour à tous,
En remplissant une table, certains champs restent vides car ils manquent des informations nécessaires à leur remplissage. Le fait que les champs n'ont pas de données n'est pas grave, simplement, je préfèrerais qu'ils soient remplis par des 0 (ce sont des champs de type float).
J'ai donc besoin de parcourir les lignes, et pour ça j'ai fais un curseur :
Malheureusement, après 1h, la requête n'a toujours pas donné de résultat. Donc je suppose, soit qu'il ne se passe rien et qu'elle tourne en boucle, soit que la requête n'est clairement pas optimisée (la table comporte ~200.000 lignes et peut encore augmenter en quantité).
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
28
29
30
31
32
33
34
35
36 declare Cursor remplaceNullPar0 Is select distinct <nom des champs> from <nom de la table> ; <nomVariable1> <nom de la table>.<nom champ 1>%type; <nomVariable2> <nom de la table>.<nom champ 2>%type; <nomVariable3> <nom de la table>.<nom champ 3>%type; begin Open remplaceNullPar0; Fetch remplaceNullPar0 into <nom variable 1, 2 et 3>; While (remplaceNullPar0%FOUND) Loop if (<nomVariable1> is null) then update <nom de la table> set <nom champ 1> = 0; elsif (<nomVariable2> is null) then update <nom de la table> set <nom champ 2> = 0; elsif (<nomVariable3> is null) then update <nom de la table> set <nom champ 3> = 0; end if; End loop commit; close remplaceNullPar0; end; / exit;
J'aimerais donc bien savoir ou le problème pourrait être situé.
Merci !
Partager