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 :
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;
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é).

J'aimerais donc bien savoir ou le problème pourrait être situé.

Merci !