Ir para o conteúdo principal

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     |