bonjour,

s'il vous plait, j'ai réaliser une procédure stockée qui doit insérer dans une table un champ de type blob.

----> Création de la table "livres" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
CREATE TABLE livres (
id number primary key,
fichier varchar2(64),
contenu blob
);
----> Création du répertoire logique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
CREATE DIRECTORY rep_logic AS 'C:\log_rep';
-- le dossier 'C:\log_rep' existe, et il contient un fichier "demande.txt".
----> Création de la procédure insérer_livre(id_liv, fichier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
CREATE OR REPLACE PROCEDURE inserer_livre(id_liv livres.id%TYPE, fichier livres.fichier%TYPE) AS
  cont BLOB;
  src BFILE := bfilename('rep_logic', fichier);
BEGIN
  DBMS_LOB.fileopen(src, DBMS_LOB.file_readonly);
  INSERT INTO livres VALUES(id_liv, fichier, empty_blob()) RETURN contenu INTO cont;
  DBMS_LOB.loadfromfile(cont, src, DBMS_LOB.getlength(src),1,1);
  DBMS_LOB.fileclose(src);
  COMMIT;
END inserer_livre;
la table livres, le répertoire logique et la procédure stockée inserer_livres(id, fichier) sont créer sans aucune erreur.
le problème c'est que lorsque je lance la procédure il m’affiche une erreur :

---->Lancement du procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
begin 
  inserer_livre(1,'demande.txt');
end;
----> erreur obtenu :
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
 
Error starting at line 1 in command:
begin 
  inserer_livre(3,'demande.txt');
end;
Error report:
ORA-22285: non-existent directory or file for FILEOPEN operation
ORA-06512: at "SYS.DBMS_LOB", line 635
ORA-06512: at "SYSTEM.INSERER_LIVRE", line 5
ORA-06512: at line 2
22285. 00000 -  "non-existent directory or file for %s operation"
*Cause:    Attempted to access a directory that does not exist, or attempted
           to access a file in a directory that does not exist.
*Action:   Ensure that a system object corresponding to the specified
           directory exists in the database dictionary, or
           make sure the name is correct.
Même si que le répertoire existe ainsi que le fichier, je vois que le problème vient du FILEOPEN qui ne localise pas l'emplacement de mon fichier demande.txt.
est ce que vous avez des suggestion pour moi ?

merci d'avance.