CREATE TABLE BLOBDATA ( OID decimal(22) PRIMARY KEY NOT NULL, DATA blob );
建立目录和过程
create or replace directory doc_loc as '/tmp'; CREATE OR REPLACE PROCEDURE Load_BLOB_From_File (file_name in varchar2,oid in number) AS src_loc bfile:= bfilename('DOC_LOC',Load_BLOB_From_File.file_name); dest_loc BLOB; begin insert into blobdata(oid,data) values(Load_BLOB_From_File.oid,empty_blob()) returning data into dest_loc; DBMS_LOB.open(src_loc,DBMS_LOB.LOB_READONLY); DBMS_LOB.LOADFROMFILE( dest_lob => dest_loc ,src_lob => src_loc ,amount => DBMS_LOB.getLength(src_loc)); DBMS_LOB.CLOSE(src_loc); COMMIT; end; /
在SQuirrel SQL下执行过程
{call LOAD_BLOB_FROM_FILE('test.txt',1190101)}
在PL/SQL下执行过程
exec LOAD_BLOB_FROM_FILE('test.txt',1190101)
注意:
1. bfilename
语法:
BFILENAME (‘directory’, ‘file’)
变量:
directory:服务器中的物理目录名,最长只能30个字符
file:服务器中物理文件名
directory有大小写区分,这里尽量用大写
2. 文档必须是在数据库服务器上,路径不要写错