This native function in Oracle has a 4000 byte limit. This function extends that limit to 32000 bytes.
Code:CREATE OR REPLACE FUNCTION SPCCHAR2(v_Input varchar2, v_REPLACEstr varchar2) return varchar2 IS /* Author: Abhijit Date: 03/20/2009 Purpose: Override the limitation on REPLACE provided by PL/SQL. */ TYPE SPECIALCHARS IS TABLE OF VARCHAR2(4000) NOT NULL; v_Stc SPECIALCHARS :=SPECIALCHARS(); IArrayIndex INTEGER := 1; v_ReturnString varchar2(32000):=''; v_ProcessString varchar2(32000):=''; BEGIN v_ProcessString := v_Input; WHILE Length(v_ProcessString) > 0 LOOP v_Stc.EXTEND; v_Stc(IArrayIndex) := Substr(v_ProcessString, 1, 3200); v_ProcessString := Substr(v_ProcessString, 3201); IArrayIndex := IArrayIndex + 1; END LOOP; FOR Iarrayindex IN 1 .. v_Stc.COUNT LOOP v_ReturnString := Trim(v_ReturnString) || REPLACE(v_Stc(iArrayIndex), v_Replacestr); END LOOP; return Trim(v_ReturnString); EXCEPTION WHEN OTHERS THEN RAISE; END;


Reply With Quote
