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" :
----> Création du répertoire logique :
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 de la procédure insérer_livre(id_liv, fichier)
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".
la table livres, le répertoire logique et la procédure stockée inserer_livres(id, fichier) sont créer sans aucune erreur.
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;
le problème c'est que lorsque je lance la procédure il m’affiche une erreur :
---->Lancement du procédure :
----> erreur obtenu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 begin inserer_livre(1,'demande.txt'); end;
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.
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.
est ce que vous avez des suggestion pour moi ?
merci d'avance.
Partager