Bonjour les forumeurs,
J'ai le souci suivant : je veux insérer un document word dans une colonne de type BLOB mais ce document se trouve sur mon PC.
J'ai créé un directory dans ma base mais ce directory pointe vers un répertoire client (donc de mon PC) et non pas vers un répertoire du serveur Oracle car je n'ai pas accès au serveur Unix.
Là où ça coince c'est dans mon programme PL/SQL et sur la fonction dbms_lob.fileopen car Oracle me dit .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CREATE TABLE TEST_DD_BLOB ( TEST_DD_BLOB_ID NUMBER NOT NULL, TEST_DD_BLOB_NAME BLOB, CONSTRAINT PK_TEST_DD_BLOB PRIMARY KEY(TEST_DD_BLOB_ID)); create or replace directory TEST_DD_DIRECTORY as 'P:\';
En cherchant sur le net j'ai compris que le directory créé DEVAIT être sur le serveur Oracle.
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 DECLARE l_blob blob; l_bfile bfile; procedure load_a_file( p_id in number, p_filename in varchar2 ) IS begin insert into TEST_DD_BLOB values ( p_id, empty_blob() ) returning TEST_DD_BLOB_NAME into l_blob; l_bfile := bfilename( 'TEST_DD_DIRECTORY', p_filename ); dbms_lob.fileopen( l_bfile, dbms_lob.file_readonly ); dbms_lob.loadfromfile( l_blob, l_bfile, dbms_lob.getlength( l_bfile ) ); dbms_lob.fileclose( l_bfile ); end; BEGIN load_a_file(1, 'TEST_Blob_Oracle_DBlink.docx'); END; / ORA-22288: échec de l'opération FILEOPEN sur le fichier ou le LOB No such file or directory ORA-06512: à "SYS.DBMS_LOB", ligne 805 ORA-06512: à ligne 11 ORA-06512: à ligne 17
Problème : je n'ai pas accès au serveur Unix et c'est beaucoup trop lourd d'un point de vue procédure de déranger les gens ayant cet accès pour leur demander de m'aider dans mes tests qui sont tout sauf prioritaires pour eux
Existe-t-il un moyen de contourner cette obligation? Par avance merci pour vos réponses.
Partager