儲存過程中一維陣列接受按分割符拆分的資料
阿新 • • 發佈:2018-11-11
declare
-- Local variables here
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;