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