Bonjour,
Je cherche à convertir un blob (format code ASCII) en varchar2.
Le contexte : sous htmldb, les fichiers uploadés par l'utilisateurs sont stockés dans le champs blob_comment de la table htmldb_application_files sous forme héxa (logique, c'est un blob).
Le pb est que lors de la lecture (voir code ligne suivante), les caractères sont convertis en héxa.
Si mon blob contient "bonjour oracle", la procédure suivante affiche 626F6E6A6F7572206F7261636C650A, c'est à dire la version asciii-héxa.
Je préfèrerai nettement pouvoir lire "bonjour oracle"
Le cast n'est pas possible sur un blob, hextoraw ne m'a donné aucun résultat... par ailleurs, je n'ai rien trouvé sur le net (les blob sont considérés comme objet binaire, ce qui est tout à fait logique. En fait, il me faudrait un CLOB, ce qu'htmldb ne me propose pas).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 DECLARE v_blob BLOB; v_char VARCHAR(100); car_lus BINARY_INTEGER; deplacement BINARY_INTEGER; BEGIN -- récupération du blob dans la variable v_blob SELECT (blob_content) INTO v_blob FROM htmldb_application_files WHERE id=1920505973236324; -- tentative de lecture deplacement:= 1; car_lus:= 100; DBMS_LOB.READ(v_blob, car_lus, deplacement, v_char); dbms_output.put_line(v_char); END;
bref, si vous aviez une idée ou un lien, je suis tout à fait preneur.
Oraclement,
Yvan
Partager