Bonjour
nous tentons depuis plusieurs jours d'extraire des blobs oracle (8.1.7) sur notre serveur unix sans succes
tentative 1 : via proC
(bibliotheque oci.h et exemple fourni dans la doc Oracle) :
Notre 1er problème sur ce programme :
extrait :
EXEC SQL VAR buffer IS RAW(MAXBUFLEN) ;
EXEC SQL ALLOCATE :blob ;
EXEC SQL LOB enable buffering :blob ;
EXEC SQL
SELECT ficword INTO :blob FROM nv_feuille
WHERE verword='WORD02' and nomword='CV1.doc' ;
EXEC SQL
LOB DESCRIBE :blob GET LENGTH INTO :TailleAlire ;
fprintf (stdout,"ma taille1: %d,\n",(unsigned int)TailleAlire) ;
=> le programme retourne TailleAlire=0 au lieu de 89600 attendu (taille renvoyée par la requete sous toad : select dbms_lob.getlength(ficword) from nv_feuille WHERE verword='WORD02' and nomword='CV1.doc' ;
tentative 2 : via PL-SQL
(exemple fourni par helyos sur ce même site) :
résultat obtenu : le fichier généré est vide
Extrait du code :
dbms_lob.READ(vblob, vtaille, voffset, vbuffer);
vligne := utl_raw.cast_to_varchar2(vbuffer);
utl_file.put(vfile, utl_raw.cast_to_varchar2(vbuffer));
si on remplace utl_raw.cast_to_varchar2(vbuffer) par 'tutu' cela fonctionne
donc on suppose que c'est la méthode dbms_lob.READ qui ne fonctionne pas
Nous sommes étonnés que des exemples fournis par Oracle et votre site ne fonctionnent pas, d'où la question suivante :
Faut-il installer autres choses que le catproc qui contient le dbms_lob ?
Merci de votre aide,
PS : le fichier word existe dans la base, en effet, via toad : aucun problème pour récupérer le fichier en local sur notre pc de développement.
Pour info les fichiers sont chargés via du code VB5 et cela fonctionne correctement. Pour leur extraction nous sommes tenus d'utiliser du ProC voir du plsql.
Partager