CREATE OR REPLACE FUNCTION count_char ( p_data VARCHAR2 ,p_char VARCHAR2 DEFAULT ' ' ) RETURN VARCHAR2 IS v_loc NUMBER := 0; v_count NUMBER := 0; v_new_str VARCHAR2(32000); j binary_integer default 1; -- BEGIN FOR i IN 1 .. LENGTH (p_data) LOOP IF j > length(p_data) THEN exit; end if; v_loc := instr(p_data, p_char,j); IF v_loc > 0 THEN v_count := v_count + 1; IF v_count = 1 THEN v_new_str := substr(p_data,1,(v_loc-1)); ELSE v_new_str := v_new_str || substr(p_data,(v_loc-j),v_loc-j) ||''||p_char||''; --substr(p_data,v_loc+length(p_char),length(p_data)); END IF; j := length(p_char) + v_loc; ELSE v_new_str := v_new_str || substr(p_data,j,1); j := j + 1; END IF; END LOOP; dbms_output.put_line(v_new_str); RETURN v_count; END; /