use this function: UTL_RAW.LENGTH下面是示例函数:
CREATE OR REPLACE FUNCTION rtn_bytes
   RETURN NUMBER AS
v_raw   mytab.mycol%type;
BEGIN
  select mycol into v_raw from mytab;
  return UTL_RAW.LENGTH(v_raw);
END;
/

解决方案 »

  1.   

    see:oracle pl/sql supply package reference
    utl_raw
      

  2.   

    大侠好:
    我现在用的是long raw 型字段。写进去没问题,读出来时就出错。试了下一下只能读出4096字节字段,
    怎么循环都没有用,假如不用循环,直接想一次全部读出也只能设置最大值到4096。
    会不是oracle 配置有关。请帮忙,很急的。
    下面是我写入代码。
    i=0
    chunksize=10240
    totalstr=request.form("text")
    totalsize=len(totalstr)
    num=totalsize\chunksize
    remsize=totalsize mod chunksize
    for i=0 to num 
    if i=num then
    chunksize=remsize
    end if
    textstr=mid(totalstr,i*10240+1,chunksize)
    oradynaset.fields("text").value=textstr
    oradynaset.fields("text").dbappendchunk(textstr)
    next 下面是我读取的代码。  if oradynaset.recordcount>0 then
       chunksize=1024‘你说这里能设到64280,我只能设到4096,再大就读不出了
       i=0 
       do 
       curchunk=oradynaset.fields("text").dbgetchunk(i*chunksize,chunksize),这里改最大值也没用。
       cursize=len(curchunk)
       str=str+curchunk
       i=i+1
       loop until cursize<chunksize
       end if 
    ,另外,我再试了用clob型,用oo4o对象调用存储过程,可以用这个办法吗?有资料给我发些吧。
      

  3.   

    那转用blob或clob吧,其次,用dbms_lob包来读写。
    要注意大对象用法