将文本文件插入Oracle表中

--1、建立测试表
create table TA
(
  ID       INTEGER,
  FILENAME BLOB
);
--2、建立数据库目录Directories
create or replace directory XT_MRTMPDIR
  as 'E:/oracle/product/10.2.0/oradata/TempMRU';
--3、创建存储过程
create or replace procedure insert_txt(txt_dir varchar2,txt_name varchar2)
is
 txt_blob blob;
 txt_bfile bfile;
begin
  /*将通过empty_blob()函数将类型为blob的列初始化为空以便以后填充*/
  insert into ta values(1,empty_blob())
  return ta.filename into txt_blob;

  txt_bfile := bfilename(txt_dir,txt_name); --获得定位器指向的目录和文件
  if (dbms_lob.fileexists(txt_bfile)!=0) then --如果文件定位器指向的文件存在
    dbms_lob.fileopen(txt_bfile,dbms_lob.file_readonly); --打开目标文件

    /*将文件字节流数据加载到指定的LOB类型变量中*/
    dbms_lob.loadfromfile(txt_blob,txt_bfile,dbms_lob.getlength(txt_bfile));

    dbms_lob.fileclose(txt_bfile);--关闭文件
    commit;
    dbms_output.put_line('已经从'||txt_dir||'目录中读取了文本'||txt_name||'向表中插入');

  else--如果文件定位器指向的文件不存在
    dbms_output.put_line('文件没找到');
  end if;

  exception when others then
  dbms_output.put_line(sqlerrm);
end;

--4、在E:/oracle/product/10.2.0/oradata/TempMRU创建要插入的aa.txt和bb.csv文件

--5、调用存储过程
begin
insert_txt('XT_MRTMPDIR','aa.txt');
end;

你可能感兴趣的:(oracle,exception,数据库,Integer,存储,insert)