Logre corregirlo. Lo "partí" en dos:
Ya me jala correcto cuando invoco a la funcion : Formatea_Hilado que es donde
hace el procedimiento.
El detalle es que me devuelve dos registros..debiendome devolver solo uno que
seria la combinación de dos o mas registros que existan..o sea solo un
registro/dato combinado...
Como deberia hacerlo ???
CREATE OR REPLACE FUNCTION public."Combinacion" ( numero_ficha integer )
RETURNS SETOF varchar AS
$body$
DECLARE retorno RECORD ; cHilado varchar(500);
BEGIN
cHilado :='';
FOR retorno IN SELECT vmhilados.* FROM vmhilados
INNER JOIN vfichas_hilado ON vmhilados.seq_mhilados =
vfichas_hilado.seq_mhilados WHERE vfichas_hilado.seq_fichas =numero_ficha
LOOP
cHilado := cHilado || public."Formatea_Hilado"(retorno.titulo,
retorno.descripcion, retorno.por_alg, retorno.por_nyl, retorno.por_pol,
retorno.por_lyc, retorno.por_coc, retorno.por_vis, retorno.por_acr) ;
RETURN NEXT cHilado;
END LOOP;
RETURN ;
END
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100 ;
________________________________
De: Jaime Casanova <[email protected]>
Enviado: viernes, 29 de diciembre de 2017 3:41
Para: Alvaro Herrera
Cc: Micky Khan; FORO POSTGRES
Asunto: Re: Recorrer Tabla/cursor y formar un solo dato
On 28 December 2017 at 16:57, Alvaro Herrera <[email protected]> wrote:
>
> Me parece que hay más problemas en tu código, y me parece que hay una
> manera más simple de solucionar el requerimiento, pero eso te puedo
> decir por ahora.
>
Empezando porque siempre debes tratar de solucionar los problemas por
separados, así son más fáciles de manejar. Lo primero que se me
ocurrió es que deberían ser dos funciones:
1) una que concatene un sólo registro
2) otra que recorra la tabla, llame la primera función y concatene
Una vez que lo separé así fue obvio que esto se puede hacer con una
función y una consulta:
SELECT string_agg(funcion_que_formatea_un_registro(vfichas_hilado))
FROM vfichas_hilado
WHERE seq_fichas = numero_ficha
donde la función funcion_que_formatea_un_registro() recibe un
parámetro que es un record, no lo probé ahorita pero es la idea
--
Jaime Casanova
www.2ndQuadrant.com<http://www.2ndQuadrant.com>
Professional PostgreSQL | 2ndQuadrant <http://www.2ndquadrant.com/>
www.2ndquadrant.com
2ndQuadrant PostgreSQL - Products & Services for PostgreSQL
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services