Insérer BLOB dans Oracle Express 10g
Bonjour,
Je rencontre un problème pour insérer un fichier BLOB dans une table créé sous Oracle Express 10g.
Au départ, j'ai une table qui s'appelle LOGOSUPPORT(IDLOGOSUPPORT NUMBER, IMAGELOGO BLOB, NOM VARCHAR2).
C'est une table très simple, id de l'identifiant, l'image elle-même et son nom, on peut pas plus simple...
Voilà la procédure que j'utilise (qui compile) :
Code:
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 38 39 40 41 42 43 44
|
create or replace
PROCEDURE load_file (
pdname NUMBER,
psname VARCHAR2,
pfname VARCHAR2) IS
src_file BFILE;
dst_file BLOB;
lgh_file BINARY_INTEGER;
BEGIN
src_file := bfilename('LOGODIR', pfname);
-- insert a NULL record to lock
INSERT INTO LOGOSUPPORT
(IDLOGOSUPPORT, IMAGELOGO, NOM)
VALUES
(pdname, EMPTY_BLOB(), pfname)
RETURNING IMAGELOGO INTO dst_file;
-- lock record
SELECT IMAGELOGO
INTO dst_file
FROM LOGOSUPPORT
WHERE NOM = pfname
FOR UPDATE;
-- open the file
dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
-- determine length
lgh_file := dbms_lob.getlength(src_file);
-- read the file
dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
-- update the blob field
UPDATE LOGOSUPPORT
SET IMAGELOGO = dst_file
WHERE NOM = pfname;
-- close file
dbms_lob.fileclose(src_file);
END load_file; |
Je ne suis pas un spécialiste de PL/SQL, j'ai repris une procédure que j'ai trouvée sur le net et j'ai essayé de l'adapter à mon cas de figure.
Je l'exécute ensuite par cette instruction :
Code:
1 2
|
execute LOAD_FILE(1, 'C:\TEMP\CD.jpg', 'Compact Disc'); |
J'ai changé les slashs en anti-slashs ou double anti-slashs, mais rien j'ai tjs cette erreur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
execute LOAD_FILE(1, 'C:/TEMP/CD.jpg', 'Compact Disc')
Rapport d'erreur :
ORA-22288: échec de l'opération FILEOPEN sur le fichier ou le LOB
Le fichier spécifié est introuvable.
ORA-06512: à "SYS.DBMS_LOB", ligne 523
ORA-06512: à "DISCMANAGER.LOAD_FILE", ligne 27
ORA-06512: à ligne 1
22288. 00000 - "file or LOB operation %s failed\n%s"
*Cause: The operation attempted on the file or LOB failed.
*Action: See the next error message in the error stack for more detailed
information. Also, verify that the file or LOB exists and that
the necessary privileges are set for the specified operation. If
the error still persists, report the error to the DBA. |
Quelqu'un peut-il m'indiquer mon erreur ?
Est-il possible d'enregistrer un BLOB dans la version light d'Oracle ?
Merci pour vos réponses.