|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() |
Bonjour tout le monde,
dans le cadre d'un site perso, j'utilise la base de données MySQL 5. Pour ajouter, modifier, supprimer mes tables de ma base de données, je passe par des Procédures Stockées. J'aimerai vous demander votre avis pour les procédures stockées de mises à jour. Par exemple : Code :
Seulement, ce qui m'intéresserait c'est de ne mettre à jour QUE ce que je veux. Par exemple je veux mettre à jour que la Ville de Naissance. J'aimerai pouvoir faire cela : Code :
Je pourrais faire cela via de multiple IF THEN ELSE IF END IF... Mais cela pourrait être long, fastidieux et moche. Y'a-t'il une façon plus propre de construire ma requête dynamiquement afin qu'il ne mette à jour QUE les champs renseigner dans les paramètres (où la valeur est différent de vide) ? EDIT : Sur SQL Server j'utilisais les requêtes dynamiques (construire une chaine qui contient ma requete et que je construis selon des conditions, puis une fois terminée, lancer ma requete). Y'a un équivalent en MySQL ?? Merci de me donner votre avis sur la question. Shinn77, Till the End of Time |
||||
|
|
00
|
|
|
#2 | ||||||
|
Nouveau Membre du Club
![]() |
Bon pour ceux que ça intéresse j'ai trouvé comment faire une requête dynamique sous MySQL :
Code :
Code :
De même, si on lance comme ça : Code :
On a donc une création dynamique de la requête. Bon ici y'a que 2 champs donc pas grand intérêt mais si j'avais 6 champs ca serait beaucoup plus propre que 150 IF... Y'a t il une autre façon d'après vous pour faire cela plus propre ? Merci, Shinn77, Till the End of Time |
||||||
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() |
Bon finalement j'ai trouvé bien plus simple en utilisant :
- COALESCE(a, b) : si a = null, alors b, sinon a - NULLIF(a, b) : si a = b, alors null, sinon a et j'obtient : Code :
1/ Si p_Titre est égal à vide alors p_Titre = null (NULLIF) 2/ Si p_Titre est égal à null alors on reprend la valeur de Titre sinon la valeur de p_Titre (COALESCE) Ca fait exactement comme avant mais en 150 fois plus simple lol Bon merci Je met le post en Résolu Shinn77, Till the End of Time. |
||
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Merci à toi, tres intéressant
|
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() |
De rien, ce fut un plaisir (rires)
Shinn77 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com