ループカット文字列


私の成果ですね.覚えておいてください.
  
create or replace procedure kmms.p_test_wy(i_caption_accounts in char,
                                           o_return_code      out number) is
  v_caption_account varchar2(400);
  v_index           int;
  v_count           int;
  v_c_a             varchar2(10);
  v_index_last      int;
  v_num             int default 0;
begin
  v_caption_account := replace(i_caption_accounts, ',', ',');

  if v_caption_account is not null then
  
    if instr(v_caption_account, ',', -1, 1) < length(v_caption_account) then
      v_caption_account := v_caption_account || ',';
    end if;
  
    v_index := instr(v_caption_account, ',');
    v_index_last := 1;
  
    while v_index >0 loop
    
      v_c_a := substr(v_caption_account,
                      v_index_last,
                      v_index - v_index_last);
    
      v_index_last := v_index + 1;
      v_index      := instr(v_caption_account, ',', v_index_last, 1);
    
    --     
    v_num := v_num +1;
    
    end loop;
  end if;
  o_return_code := v_num;
EXCEPTION
  when others then
    o_return_code := -1 * SQLCODE;
    rollback;
end;