Function replaceClob_new(srcClob IN CLOB,
replaceStr IN VARCHAR2,
replaceWith IN VARCHAR2) Return CLOB IS
vBuffer VARCHAR2(32767);
l_amount BINARY_INTEGER := 4000;
l_pos PLS_INTEGER := 1;
l_clob_len PLS_INTEGER;
newClob clob;
BEGIN
newClob := EMPTY_CLOB;
dbms_lob.createtemporary(newClob, TRUE);
l_clob_len := dbms_lob.getlength(srcClob);
-- dbms_output.put_line (l_clob_len);
WHILE l_pos < l_clob_len LOOP
dbms_lob.read(srcClob, l_amount, l_pos, vBuffer);
IF vBuffer IS NOT NULL THEN
vBuffer := replace(vBuffer, replaceStr, replaceWith);
dbms_lob.writeappend(newClob, LENGTH(vBuffer), vBuffer);
END IF;
l_pos := l_pos + l_amount;
END LOOP;
return newClob;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm);
return null;
END;
替换clob里面的字符
最新推荐文章于 2024-03-25 17:37:59 发布