declare
i integer;
Lar_Input t_Arr.Arrname;
begin
-- Test statements here
Pkg_n_Cst_String.Prc_Parsetoarr('A|B|C|D|E|' , '|' , Lar_Input);
dbms_output.put_line( to_char(Lar_Input(1)) ) ;
dbms_output.put_line( to_char(Lar_Input(2)) ) ;
dbms_output.put_line( to_char(Lar_Input(3)) ) ;
end ;
PRO CEDURE prc_parsetoarr(prm_source IN VARCHAR2,
prm_delimiter IN VARCHAR2,
prm_array OUT t_arr.arrname
) IS
i NUMBER;
ln_pos NUMBER;
lv_vc VARCHAR2(2000 );
BEGIN
prm_array := t_arr.arrname();
i := 1 ;
ln_pos := 1 ;
lv_vc := prm_source;
IF lengthb(lv_vc) > 0 THEN
WHILE ln_pos > 0 LOOP
ln_pos := instrb(lv_vc, prm_delimiter);
prm_array.EXTEND;
IF ln_pos > 0 THEN
prm_array(prm_array.COUNT) := TRIM(substrb(lv_vc, 1 , ln_pos - 1 ));
lv_vc := TRIM(substrb(lv_vc, ln_pos + lengthb(prm_delimiter)));
ELSE
prm_array(prm_array.COUNT) := TRIM(lv_vc);
END IF ;
i := i + 1 ;
END LOOP ;
END IF ;
EXCEPTION
WHEN OTHERS THEN
NULL ;
END ;