Clob,blob的存储

--创建存储blob字段的表

create table TESTLOB(  ID      INTEGER,  CONTENT BLOB)

--创建序列

create sequence LOB_ID minvalue 1 maxvalue 99999999999999 start with 21 increment by 1 cache 20;

--插入数据

insert into testlob values(lob_id.nextval,utl_raw.cast_to_raw('我考'));

--查询数据

select id,utl_raw.cast_to_varchar2(content) from testlob;

--创建存储clob字段的路径的directory

create or replace directory  “DATA_FILE  as 'd:\';--创建目录一定要将名称用双引号引起来

否则会报ora-22285错误:对不存在的目录或文件进行FILEOPEN操作

create or replace procedure insert_lob

/*

时间:2011-07-30

功能:从文件中读取数据到数据库中

*/

(

       var_filename in varchar2--文件名

)

is

       v_blob blob;

       v_file bfile:=bfilename('data_file',var_filename);--文件名

       v_errorstr varchar2(2000);

begin

  insert into testlob    (id, content1)  values    (LOB_ID.NEXTVAL, empty_blob()) 

    returning content1 into v_blob;--插入数据

  dbms_lob.fileopen(v_file);

  dbms_lob.loadfromfile(v_blob,v_file,dbms_lob.getlength(v_file));--读取文件

  dbms_lob.fileclose(v_file);

  

  exception when others then

         v_errorstr:=sqlerrm(sqlcode);

         dbms_output.put_line(v_errorstr);

  --commit;

end;

--oracle调用ufl.fremove来删除操作系统中的文件

  utl_file.fremove('DATA_FILE','blob.txt');

注意data_file创建时必须用双引号引起来,而且调用时必须用大写。如果还是不对

initsid.ora文件中,加入或修改  
       设置utl_file_dir的要点:  
     1    utl_file_dir=*      这表示你能操作任何目录,尽量不要用  
     2    utl_file_dir=d:\    这表示你能操作d:\目录下的文件,但你不能操作d:\目录下的子目录  
     3。注意在设置  
       utl_file_dir=路径时,如果路径是长路径名,例如c:\my    temp目录,则你必须加上'',例如:  
       utl_file_dir='c:\my    temp'  
     4utl_file_dir可以是多个路径  
           utl_file_dir=c:\,d:\,d:\temp,'c:\my    temp'  
     5。设置完必须重新启动数据库 

-- oracle调用utl_file.frename来对文件进行重命名

utl_file.frename('DATA_FILE','blob.txt','DATA_FILE','x.txt',TRUE);

--oracle调用utl_file.fcopy来对文件进行复制

 utl_file.fcopy('DATA_FILE','x.txt','DATA_FILE','c_x.txt');

你可能感兴趣的:(Clob,blob的存储)