Splitfunktion für OracleDB

Erstellen und Speichern der Splitfunktion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
create or replace type split_tbl as table of varchar2(32767);

create or replace function split (p_list varchar2, p_del varchar2 := ',')
return split_tbl pipelined
is
    l_idx    pls_integer;
    l_list   varchar2(32767) := p_list;
    l_value  varchar2(32767);
begin
    loop
        l_idx := instr(l_list,p_del);
        if l_idx > 0 then
            pipe row(substr(l_list,1,l_idx-1));
            l_list := substr(l_list,l_idx+length(p_del));
        else
            pipe row(l_list);
            exit;
        end if;
    end loop;
    return;
end split;

show errors;

Verwendung:

select * from table(split('one,two,three'))