Procedure - Retorna lista
SQL:
create or alter procedure retorna_lista (texto blob, delimitador varchar(20)) returns (lista varchar(4000)) as
declare variable posicao integer = 1;
declare variable prox_pos integer;
declare variable tamanho integer;
begin
tamanho = char_length(:texto);
while (posicao <= tamanho) do
begin
prox_pos = position(delimitador, :texto, :posicao);
if (:prox_pos = 0) then
prox_pos = tamanho+1;
lista = trim(substring(:texto from :posicao for (:prox_pos - :posicao)));
suspend;
posicao = prox_pos+1;
end
end
Chamada da procedure:
SELECT *
FROM retorna_lista('1,2,3', ',')
Retorno:
| LISTA |
---------
| 1 |
| 2 |
| 3 |