From: | Micky Khan <mcanchas(at)hotmail(dot)com> |
---|---|
To: | FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Recorrer Tabla/cursor y formar un solo dato |
Date: | 2017-12-29 22:02:27 |
Message-ID: | AM4P190MB02252C371B75514A3B4B46D3D7050@AM4P190MB0225.EURP190.PROD.OUTLOOK.COM |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 <jaime(dot)casanova(at)2ndquadrant(dot)com>
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 <alvherre(at)alvh(dot)no-ip(dot)org> 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
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2017-12-29 22:37:24 | Re: Recorrer Tabla/cursor y formar un solo dato |
Previous Message | Alvaro Herrera | 2017-12-29 20:42:34 | Re: Error con PostgreSQL Falla electrica |