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) :
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.
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
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 l'exécute ensuite par cette instruction :
J'ai changé les slashs en anti-slashs ou double anti-slashs, mais rien j'ai tjs cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 execute LOAD_FILE(1, 'C:\TEMP\CD.jpg', 'Compact Disc');
Quelqu'un peut-il m'indiquer mon erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Est-il possible d'enregistrer un BLOB dans la version light d'Oracle ?
Merci pour vos réponses.
Partager