|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
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 :
J'aimerais donc bien savoir ou le problème pourrait être situé. Merci ! |
||
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 313 ![]() |
Citation:
Boucler sur la table via un curseur pour mettre à jour un champ c'est une autre mauvaise idée. Mettez à jour la table avec une seule requête. Code :
|
|||
|
|
10
|
|
|
#3 |
|
Membre chevronné
![]() François Développeur informatique Inscription : novembre 2002 Messages : 773 ![]() |
Par la suite, tu pourrais également ajouter la valeur 0 par défaut lors des insert.
Pour cela, soit tu le fais dans la requête insert en elle-même soit dans la table, tu mets default 0 au niveau du champ où c'est nécessaire.
__________________
La SNCF est mon ami blog PARIS-GRANVILLE Inscription au panel IPSOS (possibilité d'avoir des bons d'achats) |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
En complément de ce qu'indique mnitu, j'ajouterai que les lignes suivantes font des updates complets sur la table :
Code :
).
|
||
|
|
10
|
|
|
#5 |
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
Merci pour ton aide.
La requête s'éxécute en moins d'une seconde mais les champs restent vides. Il n'y a ni 0, ni "Null". Le problème viendrait d'autre part ? @Rei Ichido : ah bon ? il ne mettrait pas à jour uniquement la ligne concernée ? |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
"Vide", ça ne peut être que null. Avez-vous fais un commit de la transaction ?
|
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
|
|
|
01
|
|
|
#8 | |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Citation:
Cela dit, autant faire un UPDATE massif |
|
|
|
00
|
|
|
#9 |
|
Membre éprouvé
![]() |
En complément de toutes les bonnes choses qui ont été dites (en particulier qu'il vaut mieux faire un UPDATE global qu'utiliser la méthode du curseur), la raison pour laquelle votre code ne se terminera jamais est qu'il y a une boucle infinie : après l'ouverture du curseur, le FETCH est bien fait une 1e fois, mais il n'est jamais fait à l'intérieur de la boucle. Du coup on reste toujours sur les premières variables récupérées, et la condition du while est toujours vraie...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com