how 如何读取oracle的大字段数据clob

--begin by itlife365
如何读取oracle的大字段数据clob
首先,CLOB里存的是2进制
判定长度DBMS_LOB.GETLENGTH(col1)
获取文本DBMS_LOB.SUBSTR(col1,n,pos)
DBMS_LOB.SUBSTR(col1,10,1)表示从第1个字节开始取出10个字节
DBMS_LOB.SUBSTR(CLOB_VAR,32767)表示截取CLOB变量保存的全部数据
DBMS_LOB.FILECLOSE(IMG_BFILE)关闭文件
使用dbms_lob.substr时只能转化一部分,再多的时候就提示缓存不够。
dbms_lob.substr(test.clob_content,3500,1)
select dbms_lob.substr(student.name,3500,1) from student;

clob转化为字符串,SELECT  UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(col1,10,1))  FROM   tab1;
如果clob中包含空格则不能使用。

将clob类型转化成字符串
create  or  replace  function   getclob(
         table_name            in   varchar2,
         field_id              in   varchar2,
         field_name            in   varchar2,
         v_id                  in   number,
         v_pos                 in  number)  return   varchar2
is
         lobloc                clob;
         buffer                varchar2(32767);
         amount                number  :=   2000;
         offset                number  :=   1;
         query_str             varchar2(1000);
begin
     query_str   :='select   '||field_name||'  from   '||table_name||'  where   '||field_id||'=  :id   ';
     EXECUTE  IMMEDIATE  query_str  INTO  lobloc  USING   v_id;
     offset:=offset+(v_pos-1)*2000;
     dbms_lob.read(lobloc,amount,offset,buffer);
              return   buffer;
exception
       when  no_data_found   then
              return   buffer;
end;
--end by itlife365

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
搜索
标签列表
网站分类
最新留言
    文章归档
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.闽ICP备11018667号-2