CREAR FUNCION SPLIT
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;
SELECT * FROM TABLE(SPLIT('CP AMAZONAS, AMAZONAS, BAGUA'));
FILA_1 => CP AMAZONAS
FILA_2 => AMAZONAS
FILA_3 => BAGUA
- Crear Tipo
create or replace type split_tbl as table of varchar2(32767);
- Crear Función
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;
- Prueba
SELECT * FROM TABLE(SPLIT('CP AMAZONAS, AMAZONAS, BAGUA'));
- Resultado
FILA_1 => CP AMAZONAS
FILA_2 => AMAZONAS
FILA_3 => BAGUA
Comentarios
Publicar un comentario