Bonjour,

Dans le but d'insérer un champ BLOB ainsi que de le lire (SELECT), je connais grâce à l'article d'Helyos (http://helyos.developpez.com/lob/) que l'on peut pas faire un INSERT basique sur un blob et de même pour le select !!
J'ai alors essayé l'exemple d'Helyos (partie BLOBs)
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
CONNECT system / < pass > 
CREATE directory blobdir AS 'c:\temp\';
GRANT READ ON directory blobdir TO scott;
 
CREATE TABLE scott.t_blob (id number, image blob);
 
CREATE OR REPLACE PACKAGE scott.sql_blob IS
 
  -- Procédure servant à ajouter un BLOB à notre table.
  -- p_id correspond à l'id
  -- p_name correspond au nom du fichier à inserer.
  PROCEDURE add_blob(p_id NUMBER, p_name VARCHAR2);
 
END sql_blob;
/
CREATE OR REPLACE PACKAGE BODY scott.sql_blob IS
 
  PROCEDURE add_blob(p_id NUMBER, p_name VARCHAR2) IS
    v_blob  BLOB;
    v_bfile BFILE;
  BEGIN
    -- On insére la ligne avec un blob vide dont on récupère le pointeur
    INSERT INTO t_blob
    VALUES
      (p_id, empty_blob())
    RETURNING image INTO v_blob;
    -- On déclare un pointeur vers notre fichier
    v_bfile := bfilename(directory => 'BLOBDIR', filename => p_name);
    -- On ouvre ce fichier
    dbms_lob.fileopen(v_bfile);
    -- On rempli l'emplacement du BLOB vide dans la table avec le contenu de notre fichier
    dbms_lob.loadfromfile(v_blob, v_bfile, dbms_lob.getlength(v_bfile));
    -- On ferme le fichier
    dbms_lob.fileclose(v_bfile);
  END;
END sql_blob;
/
Tout est OK jusque là mais lorsqu'on teste enfin la procédure du package:
exec sql_blob.add_blob(1,'toto.bmp');
De même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
exec scott.sql_blob.add_blob(1,'C:\temp\toto.bmp');
L'erreur est :
ERREUR à la ligne 1 :
ORA-22288: échec de l'opéation FILEOPEN sur le fichier ou le LOB
Le fichier spécifié est introuvable.
ORA-06512: à "SYS.DBMS_LOB", ligne 504
ORA-06512: à "SCOTT_BLOB", ligne 15
ORA-06512: à ligne 1


Or, ce fichier toto.bmp existe bel et bien