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).
Partager