Bonjour,

Après moultes recherches sous Google, la FAQ et les sources sur le site, je me décide à ouvrir un post concernant le chargement d'une image dans un champ LONG RAW sous ORACLE 8i.

Le format LONG RAW est Deprecated, mais il nous est imposé par l'outil que nous utilisons.

L'objectif est de charger une image JPG dans un champ LONG RAW à partir d'un fichier dans un répertoire donné.

J'ai bien essayé via UTL_FILE, UTL_RAW et aussi avec la méthode des LOB, mais un RETURNING ___ to ___ n'est pas disponible en Oracle 8i.


Avec le code suivant, j'obtiens l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
-6502-ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error
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
 
declare 
  file_data_ LONG RAW;
  file_ UTL_FILE.file_type;
  file_lng_ NUMBER(9);
begin
     file_ := UTL_FILE.fopen('/d1/ifs/index/ifdt3ifs/sigma1/data/','Base_fond_ess.jpg','rb',32767);
     UTL_FILE.get_line(file_, file_data_);
     file_lng_ := length(file_data_);
     INSERT INTO binary_object_data_block (blob_id, seq, data, length, application_data) VALUES (10,1,utl_raw.cast_to_raw(file_data_),file_lng_,7);
     COMMIT;
     UTL_FILE.fclose(file_);
 
EXCEPTION WHEN OTHERS THEN
    dbms_output.put_line(sqlcode || '-' || sqlerrm);
end;
Description de la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
SQL> desc binary_object_data_block;
 Nom                                       NULL ?   Type
 ----------------------------------------- -------- 
 BLOB_ID                                   NOT NULL NUMBER
 SEQ                                       NOT NULL NUMBER
 DATA                                               LONG RAW
 LENGTH                                    NOT NULL NUMBER
 APPLICATION_DATA                                   VARCHAR2(2000)
 
SQL>
Un petit coup de pouce, je nage un peu (brasse coulée )