Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
salut,
quelqu'un peut me dit comment utiliser -s'il est possible- SELECTBLOB avec des variables
exple :
FUNCTION (string as_table , as_column , as_id , ANY as_arg) as string
blob li_img SELECTBLOB as_column INTO :li_img FROM as_table WHERE as_id = :as_arg USING SQLCA; RETURN li_img
END FUNCTION
mecri d'avance
Dernière modification par azuldev (26-03-2010 16:26:20)
Hors ligne
Bonjour azuldev.
Pour rappel:
Hors ligne
Bonjour,
A ma connaissance, ce n'est pas possible en "'embedded SQL" avec la syntaxe SELECTBLOB. Les tables et les colonnes référencées doivent être statique.
Hors ligne
Merci
et pour mettre le champ blob en NULL ?
ma syntax suivante ne marche pas
BLOB li_blob_null SETNULL(li_blob_null) UPDATEBLOB TABLE1 SET img=:li_blob_null WHERE id =:li_id USING SQLCA;
Dernière modification par azuldev (29-03-2010 12:15:13)
Hors ligne
Bonjour, en utilisant une table temporaire
// création table temporaire Execute Immediate 'CREATE TABLE TABLE_TEMP( ID_TEMP NUMBER, BLOB_TEMP BLOB )' ; // SQL dynamique (ajouter des quotes si la colonne est de type chaine) ls_sql = 'INSERT INTO TABLE_TEMP ' + 'SELECT 1,' + as_column + ' FROM ' + as_table + ' WHERE ' + as_id + '=' + as_arg Execute Immediate :ls_sql ; // récup valeur blob SELECTBLOB BLOB_TEMP INTO :li_img FROM TABLE_TEMP WHERE ID_TEMP = 1 ; // suppression table temporaire Execute Immediate 'DROP TABLE TABLE_TEMP' ;
et pour mettre le champ blob en NULL ?
// directement en BDD ls_sql = 'UPDATE TABLE1 SET IMG = NULL WHERE ID = ' + String( li_id ) Execute Immediate :ls_sql ;
Hors ligne
JE TE REMERCIE INFINIMENT erasorz
mais
ls_sql = 'UPDATE TABLE1 SET IMG = NULL WHERE ID = ' + String( li_id ) Execute Immediate :ls_sql ;
ne marche pas.
nb:je suis sur ASA
Dernière modification par azuldev (29-03-2010 14:51:01)
Hors ligne
ça fonctionne ?
Hors ligne
Bonjour,
Je suis sous ASA 8.0.3 et j'utilise cette syntaxe sans problème. Par contre, si tu n'utilises pas l'objet transaction par défaut, il faut éventuellement compléter ta syntaxe :
EXECUTE IMMEDIATE :ls_sql USING MyTr;
Hors ligne