当前位置导航:炫浪网>>网络学院>>编程开发>>Oracle教程

PowerBuilder 读取Oracle Clob字段内容

    最近需要用PowerBuilder读取Oracle 的Clob字段内容,发现直接使用SELECTBLOB读取的数据总是有数据不能完全读取问题。最后我在网上进行了搜罗,发现可以写一个FUNCTION来进行处理:

    1、Oracle读取Clob函数,一次可以读取2000个字符:

 create or replace function getclob(
table_name in varchar2, --表名
field_name in varchar2, --CLOB字段名
v_tj in varchar2, --表查询条件
v_pos in number –字符起始位置)

return varchar2 is
buffer varchar2(32767);
lobloc clob;
amount number := 2000;
query_str varchar2(1000);
begin
query_str :='select '||field_name||' from '||table_name||' where '||v_tj||'';
--initialize buffer with data to be found
EXECUTE IMMEDIATE query_str INTO lobloc ;
--read 2000 varchar2 from the buffer
dbms_lob.read(lobloc,amount,v_pos+1,buffer);
return buffer;
exception
when no_data_found then
return buffer;
end;

    2、PowerBuilder采用循环读取CLOB字段的所有内容:

 String ls_temp,ls_data,ls_data1

ls_temp = " blbh="+String(ll_blbh)+" and blym= "+String(li_blym)


SELECT dbms_lob.getlength(html) INTO :ll_len FROM ys_zy_bl_html Where blbh = :ll_blbh AND blym = :li_blym;


Long i

i = 1

DO

//调用ORACLE的函数GetClob
SELECT getclob('ys_zy_bl_html','html',:ls_temp,:i ) INTO :ls_data FROM dual;

ls_data1 = ls_data1 + ls_data
ll_len = ll_len - 2000
i = i + 2000
LOOP WHILE ll_len >= 0

    注:ll_blbh, li_blym为PowerBuilder变量。

    简单吧,ls_data1就是需要读取的CLOB字段的全部内容。

相关内容
赞助商链接