oracle中clob字段处理
我在
oracle存储过程中有一大字段类型(CLOB),如何将这个大字段类型的转成varchar2.
因为我在游标中,又用了这个大字段类型来拼装游标的SQL,结果oralce不认识。请大侠指点:
serarchSql :按条件拼装的查询SQL,其中包含了CLOB字段的数据
projectTableInfo :自定义游标
OPEN projectTableInfo FOR serarchSql;
结果两者一结合,oracle不认识,原本serarchSql是varchar2类型,里面包含了clob类型之后,oralce自动转换了变成了long类型。
妄求大侠指点!
------解决方案--------------------用dbms_lob.substr(<字段值>)转为varchar2
------解决方案--------------------CREATE OR REPLACE FUNCTIon "BLOB_TO_VARCHAR" (blob_in IN BLOB)
RETURN VARCHAR2
IS
v_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;