我在oracle存储过程中有一大字段类型(CLOB),如何将这个大字段类型的转成varchar2.
因为我在游标中,又用了这个大字段类型来拼装游标的SQL,结果oralce不认识。请大侠指点:
serarchSql :按条件拼装的查询SQL,其中包含了CLOB字段的数据
projectTableInfo :自定义游标
OPEN projectTableInfo FOR serarchSql;结果两者一结合,oracle不认识,原本serarchSql是varchar2类型,里面包含了clob类型之后,oralce自动转换了变成了long类型。妄求大侠指点!

解决方案 »

  1.   

    用dbms_lob.substr(<字段值>)转为varchar2
      

  2.   

    用dbms_lob.substr(<字段值>)转为varchar2
    这个也不是办法,截取之后的字符串拼装在一起,oracle又给你转型啦
      

  3.   

    CREATE OR REPLACE FUNCTIon "BLOB_TO_VARCHAR" (blob_in IN BLOB)
    RETURN VARCHAR2
    ISv_varchar VARCHAR2(4000);
    v_start PLS_INTEGER := 1;
    v_buffer PLS_INTEGER := 4000;BEGIN
     if DBMS_LOB.GETLENGTH(blob_in) is null then
            return empty_clob();
     end if; FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer)
     LOOP v_varchar := UTL_RAW.CAST_TO_VARCHAR2(utl_raw.convert(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));
     v_start := v_start + v_buffer;
     END LOOP; RETURN v_varchar;end blob_to_varchar;