Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Sous PB 10.1, je cherche à faire une requête à la volée dans une fonction :
UPDATE MaTable SET MonChamp = MaNouvelleValeur WHERE MonIndice IN (:MaVariable)
MaVariable est de type String et contient la liste de mes indices séparés par des ",". J'ai bien tenté de prendre un type Integer[] mais le compilateur refuse
Malheureusement en sortie, le SQLCODE vaut tjs 0 mais ma base de données n'a pas été modifié.
Merci encore poura la réponse
Hors ligne
tu as essayé de faire en dur pour voir si ca fonctionnait ?
UPDATE MaTable SET MonChamp = MaNouvelleValeur WHERE MonIndice IN ("T","Q","S") ;
Hors ligne
oui bien sur... j'ai trouvé une solution :
MaString = "Update MaTable Set MonChamp = " + String(MaNouvelleValeur) & + " WHERE MonIndice IN (" + MaVariable + ")" EXECUTE IMEDIATE :MaString;
Et ca marche ^^ Etrange pourtant que ma première mouture ne fonctionne que pour une seule valeur dans le "IN" ensuite pour 2 ca ne fait rien, pas d'update pas d'erreur :|
Hors ligne
Bonjour,
il me semble que ce n'est pas possible de faire un IN ( :tableau ), à confimer.
Sinon il y a la solution de construire dynamiquement la requête et de l'exécuter, par exemple :
ls_sql = "UPDATE MaTable SET MonChamp = MaNouvelleValeur WHERE MonIndice IN ( " + maVariable + ")" EXECUTE IMMEDIATE :ls_sql ;
Hors ligne
Oups, un poil trop lent
Hors ligne
oky doky , tout est bien qui se finit bien !
et merci à tous !
Hors ligne
Merci erasorz ^^ à 2mn pres ;)
Merci Pick ouic ;)
Hors ligne