CREATE OR REPLACE FUNCTION IMPLODE (p_cursor sys_refcursor, p_del VARCHAR2) RETURN VARCHAR2 IS l_value varchar2(32767); l_result varchar2(32767); BEGIN loop fetch p_cursor into l_value; exit when p_cursor%notfound; if l_result is not null then l_result := l_result || p_del; end if; l_result := l_result || l_value; end loop; return l_result; END;Para su uso sólo hace falta realizar una consulta del tipo:
SELECT IMPLODE(CURSOR(SELECT A.DESCRIPCION FROM TABLA A), '-' ) FROM DUAL
Y podemos ver que funciona.
Claro mi cabeza no da para pensar en esas cosas, no tengo conocimientos de cursores ni nada de eso, la función fue copiada sin niguna autorización de esta página. Y con todo y eso le doy muchas gracias al autor. Allí también se puede contar con la implementación de un split.
No hay comentarios:
Publicar un comentario