# SPLIT

## Codice Sorgente

```sql
FUNCTION             "SPLIT" 
(
    p_list varchar2,
    p_del varchar2 := ','
) return string_list
is
    l_idx    integer;
    l_list   varchar2(32767) := p_list;

    l_value    varchar2(32767);

    l_retval   string_list;
begin

  l_retval := string_list();

  loop

    --l_idx := instr(l_list,p_del);
    l_idx := my_instr(l_list,p_del);

    l_retval.extend;    

    if l_idx > 0 then
      --pipe row(substr(l_list,1,l_idx-1));
      --l_list := substr(l_list,l_idx+length(p_del));
      l_retval(l_retval.count) := substr(l_list, 1, l_idx - 1);
      l_list := substr(l_list,l_idx+length(p_del));
    else
      --pipe row(l_list);
      --exit;
      l_retval(l_retval.count) := l_list;
      exit;
    end if;

  end loop;

  return l_retval;

end split;
```
