Função - Retorna lista
SQL's:
create or replace package pkg_retorna_linhas as
type linhas is table of varchar2(4000);
function retorna_linhas(texto clob, delimitador varchar2) return linhas pipelined;
end pkg_retorna_linhas;
create or replace package body pkg_retorna_linhas as
function retorna_linhas (texto clob, delimitador varchar2) return linhas pipelined as
linha clob;
contador integer := 1;
limite integer;
begin
loop
limite := instr(substr(texto, contador), delimitador);
if (limite = 0 and contador <= length(texto)) then
limite := length(texto);
end if;
linha := trim(substr(substr(texto, contador), 1, limite));
contador := contador+limite;
exit when linha is null;
pipe row(replace(linha, delimitador, ''));
end loop;
end retorna_linhas;
end pkg_retorna_linhas;
Chamada da função:
select column_value as lista
from table(pkg_retorna_linhas.retorna_linhas('1,2,3', ','))
Retorno:
| LISTA |
---------
| 1 |
| 2 |
| 3 |