Bonjour,
Je suis en version 9.2.0.5 oracle SE.
Je voudrais extraire d'une table oracle un champ BLOB (+ d'autres) vers un fichier XML.
Ca ne fonctionne pas pour le BLOB !
Avez vous des infos ou des réponses ?
Merci
Bonjour,
Je suis en version 9.2.0.5 oracle SE.
Je voudrais extraire d'une table oracle un champ BLOB (+ d'autres) vers un fichier XML.
Ca ne fonctionne pas pour le BLOB !
Avez vous des infos ou des réponses ?
Merci
Wow, je n'ai pas encore vu l'emploi de XML sous cet angle mais je pense qu'il suffirait d'user un peu de notre matière grise:
puisque XML c'est du textuel, il faut donc traduire le blob (le fichier binaire en général) en texte aussi => le mieux c'est le représenter en HEXADECIMAL !!!
Le truc consiste à lire octet par octet le blob et le transferer vers xml. Bof, je ne sais pas le faire directement en 100 % PL/SQL, j'utiliserais du C++ et OCI ...
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <blob> 852E696C732070656E73656E74207 5652043686576616C696572206475 205A6F64696171756520657420447 261676F6E2042616C6C205A20736F 6E74206465732064657373696E732 0616E696DE973206465206C92616E 20323030302E0DB72020202020202 02020496C73206E926F6E74206A61 6D616973207675204D43475956455 22065742073657320746F75727320 64652070617373652D70617373651</blob>
randriano.dvp.com
Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).
sgonzale :
xmltype fonctionne avec du BLOB, hélas pas en 9i
randriano
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with t as (select to_blob(hextoraw('3C582F3E')) b from dual) select xmltype(b,nls_charset_id('WE8ISO8859P1')) from t; XMLTYPE(B,NLS_CHARSET_ID('WE8ISO8859P1')) ---------------------------------------------- <X/>
si le contenu est binaire, XML element le convertit automatiquement en hexa, pas besoin de C++ ou plsql.
Bon, en 9i c'est une autre histoire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with t as (select to_blob(hextoraw('3C582F3E')) b from dual) select xmlelement(b,b) from t XMLELEMENT(B,B) ------------------ <B>3C582F3E</B>
Merci pour vos réponses.
En clair, le plus simple serai de migrer en 10.2 et d'utiliser les fonctions qui sont plus avancées !
En effet, je suis sous 9i mais merci laurentschneider pour ces explications: 10g et plus, on ne passe même pas par C++ ou PL/SQL, ok
randriano.dvp.com
Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager