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.

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:\';
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
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
En cherchant sur le net j'ai compris que le directory créé DEVAIT être sur le serveur Oracle.
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.