1. 程式人生 > >儲存過程中一維陣列接受按分割符拆分的資料

儲存過程中一維陣列接受按分割符拆分的資料

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;