create or replace package body n_pk_string as function of_globalreplace(avc_source varchar2, avc_old varchar2, avc_new varchar2) return varchar2 as begin if avc_source is null or avc_old is null or avc_new is null then return null; end if; return of_globalreplace(avc_source, avc_old, avc_new, true); end of_globalreplace; function of_globalreplace(avc_source varchar2, avc_old varchar2, avc_new varchar2, ab_ignorecase boolean) return varchar2 as begin declare lvc_source varchar2(200); lvc_old varchar(20); begin --Check parameters if avc_source is null or avc_old is null or avc_new is null or ab_ignorecase is null then return null; end if; lvc_source := avc_source; lvc_old := avc_old; if ab_ignorecase then lvc_source := lower(lvc_source); lvc_old := lower(lvc_old); end if; return replace(lvc_source, lvc_old, avc_new); end; end of_globalreplace; function of_countoccurrences(avc_source varchar2, avc_target varchar2) return number as begin declare ln_count number; begin --Check for parameters if avc_source is null or avc_target is null then return null; end if; --Default is to ignore case. ln_count := of_countoccurrences(avc_source, avc_target, true); return ln_count; end; end of_countoccurrences; function of_countoccurrences(avc_source varchar2, avc_target varchar2, ab_ignorecase boolean) return number as begin declare ln_count number; ln_pos number; ln_len number; lvc_source varchar2(200); lvc_target varchar2(50); begin -- Check for parameters if avc_source is null or avc_target is null or ab_ignorecase is null then return null; end if; --Should function ignore case:1 lvc_source := avc_source; lvc_target := avc_target; if ab_ignorecase then lvc_source := lower(avc_source); lvc_target := lower(avc_target); end if; ln_len := length(lvc_target); ln_count := 0; ln_pos := instr(lvc_source, lvc_target); while ln_pos > 0 loop ln_count := ln_count + 1; ln_pos := instr(lvc_source, lvc_target, (ln_pos + ln_len)); end loop; return ln_count; end; end of_countoccurrences; end n_pk_string;