Para concatenar cadenas de diferentes filas de un grupo devueltas a partir de una consulta SQL de forma similar a aplicar count() o max() con números, usamos la función concat_group. De esta forma reducimos la cantidad de filas a una única.
Sus parámetros son dos:
* Un cursor sobre una consulta SQL para tomar la columna con la cadena a concatenar
* Una cadena que se usara como separador
Ejemplo:
select concat_group(cursor( select to_char(nombre) from usuarios
where rownum < 400));
Limitación: La cadena devuelta está limitada a 32760 caracteres que es la cantidad máxima de bytes que permite el tipo varchar2.
create or replace function concat_group(
p_cursor in sys_refcursor,
p_separador varchar2 default ' ')
is return varchar2
salida varchar2(32760); cadena varchar2(32760); begin loop fetch p_cursor into cadena; exit when p_cursor%NOTFOUND; salida := salida||p_separador||cadena; end loop; close p_cursor; return ltrim(substr(salida, length(p_separador), length(salida))); end;
0 comentarios:
Publicar un comentario