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
|
PROCEDURE load_file (p_file_name IN my_docs.notice%TYPE) AS
v_bfile BFILE;
v_blob CLOB;
LN$src_off PLS_INTEGER := 1 ;
LN$dst_off PLS_INTEGER := 1 ;
LN$Langctx NUMBER := dbms_lob.default_lang_ctx ;
LN$Warn NUMBER;
BEGIN
INSERT INTO my_docs (id, notice, doc)
VALUES (my_docs_seq.NEXTVAL, substr(p_file_name,1, length(p_file_name) -4), empty_clob())
RETURN doc INTO v_blob;
v_bfile := BFILENAME('FICHIERS_IN', p_file_name);
Dbms_Lob.Fileopen(v_bfile, Dbms_Lob.File_Readonly);
dbms_lob.loadclobfromfile(
v_blob, -- CLOB de destination
v_bfile, -- Pointeur fichier en entrée
Dbms_Lob.Getlength(v_bfile), -- Nombre d'octets à lire
LN$src_off, -- Position source de départ
LN$dst_off, -- Position destination de départ
dbms_lob.default_csid, -- CSID
LN$Langctx, -- Contexte langue
LN$Warn); -- Message d'avertissement
Dbms_Lob.Fileclose(v_bfile);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
debug('erreur !!! load_file :' || to_char( SQLCODE ) || ' = ' || to_char( SQLERRM ), p_file_name);
END; |
Partager