Oracle9i数据库存储和读取clob文件(PL/SQL脚本)

原创 2005年04月26日 11:14:00

//先建立表 lob_example1
create table lob_example1(
id number(6) primary key,
name varchar2(10),
resume clob
);

//插入数据
insert into lob_example1 values(1,'猪',empty_clob());
insert into lob_example1 values(2,'狗',empty_clob());
commit;

//创建目录,保存在c盘根目录
CREATE OR REPLACE DIRECTORY DOCS AS 'C:/';

//创建将文件内容写入数据库CLOB的存储过程
CREATE OR REPLACE PROCEDURE update_doc(
   t_id  number,
   filename varchar2
   )
as
   lobloc clob;
   fileloc bfile;
   amount int;
   src_offset int:=1;
   dest_offset int:=1;
   csid int:=0;
   lc  int:=0;
   warning int;
begin
   fileloc:=bfilename('DOCS',filename);
   dbms_lob.fileopen(fileloc,0);
   amount:=dbms_lob.getlength(fileloc);
   select resume into lobloc from lob_example1
     where id=t_id for update;
   dbms_lob.loadclobfromfile(lobloc,fileloc,amount,dest_offset,src_offset,csid,lc,warning);
   dbms_lob.fileclose(fileloc);
   commit;
end;

//调用存储过程,把文件读入数据库CLOB中,c盘下要有这两个文件
call update_doc(1,'aa.csv');
call update_doc(2,'bb.csv');

//察看id是2和1的行中文件大小
select length(resume) from lob_example1 where id=2;

select length(resume) from lob_example1 where id=1;

/////////////////////////////////////////////////////文件已经放入数据库

//将文件从数据库clob中读出来
CREATE OR REPLACE PROCEDURE get_doc(
   t_id  number,
   filename varchar2
   )
as
   lobloc clob;
   amount int;
   offset int:=1;
   buffer varchar2(2000);
   handle utl_file.file_type;
begin
   select resume into lobloc from lob_example1 where id=t_id;
   amount:=dbms_lob.getlength(lobloc);
   dbms_lob.read(lobloc,amount,offset,buffer);
   handle:=utl_file.fopen('DOCS',filename,'w',2000);
   utl_file.put_line(handle,buffer);
   utl_file.fclose(handle);
end;
/
 
//调用这个过程,把文件读出来
call get_doc(1,'zz.csv');

//哈哈,文件被保存在c盘了啊,快去看看吧

//对了,文件大了会导致缓冲区太小,缓冲区最大允许36k,大了我也不知道怎么办,正在解决中!

作者:飞仙化羽

邮箱:wujianyu2000@hotmail.com

                               @转载请注明作者


Oracle:PL/SQL--流程控制(二)——case语句(注意:在Oracle 9i 后引入)

——流程控制(二)—–case语句(注意:在Oracle 9i 后引入)语法:case variable when value1 then statements1; when valu...

PL/SQL oracle9i ppt

  • 2007年06月27日 12:11
  • 267KB
  • 下载

introduction to oracle9i:pl/sql

  • 2011年01月18日 11:25
  • 2.57MB
  • 下载

数据库 day62 Oracle(pl/sql,存储过程,触发器)

数据库 day62 Oracle(pl/sql,存储过程,触发器) 数据库建模(表关系),数据导入导出,连接远程数据库...

Introduction to Oracle9i PL/SQL课件

  • 2010年03月04日 00:18
  • 51.75MB
  • 下载

Oracle9i PL/SQL从入门到精通

  • 2008年02月18日 17:45
  • 14.66MB
  • 下载

Oracle数据库操作大全(十三)——pl/sql编程(存储过程、函数、触发器)

1.存储过程、函数、触发器局
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle9i数据库存储和读取clob文件(PL/SQL脚本)
举报原因:
原因补充:

(最多只允许输入30个字)