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-28 23:10:21 |
Message-ID: | AM4P190MB0225530E66C681CB073B2787D7040@AM4P190MB0225.EURP190.PROD.OUTLOOK.COM |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Ya resolvi los errores, ahora me sale esto
ERROR: error de sintaxis en o cerca de «RETURN»
LINE 52: RETURN NEXT retorno;
^
CREATE OR REPLACE FUNCTION public."Combinacion" ( numero_ficha integer )
RETURNS VARCHAR AS
$body$
DECLARE retorno RECORD ; cHilado1 varchar(50); cHilado2 varchar(50); Chiladox varchar(50);
BEGIN
FOR retorno IN SELECT * FROM vfichas_hilado WHERE seq_fichas = numero_ficha
LOOP
CASE
WHEN descripcion = 'PESCO' Then
cHilado1 := TRIM(titulo) || ' ' || cHilado1 || CASE WHEN cast( left( cast( por_pol as char(10) ), 2) as INTEGER ) > 0 THEN cast( por_pol as char(10) ) ELSE CAST( por_pol as CHAR(5)) END || ' ' ||
CASE WHEN cast( left( cast( por_alg as char(10) ), 2) as INTEGER ) > 0 THEN cast( por_alg as char(10) ) ELSE CAST( por_alg as CHAR(5)) END ;
cHilado2 := cHilado2 || 'PES ' || cHilado1 ;
WHEN descripcion = 'COC/VIS' Then
cHilado1 := titulo || ' ' || cHilado1 || CASE WHEN cast( left(cast( por_alg as char(10) ), 2) as INTEGER ) > 0 THEN cast( por_alg as char(10) ) ELSE CAST( por_alg as CHAR(5)) END || '/' ||
CASE WHEN cast( left(cast( por_vis as char(10) ), 2) as INTEGER ) > 0 THEN cast( por_vis as char(10) ) ELSE CAST( por_vis as CHAR(5)) END ;
cHilado2 := cHilado2 || TRIM(descripcion) || ' ' || cHilado1 ;
WHEN descripcion = 'MELANGE' Then
cHilado2 := cHilado2 || TRIM(titulo) || ' MEL ' || CASE WHEN cast( left(cast( por_pol as char(10) ), 2) as INTEGER ) > 0 THEN cast( por_pol as char(10) ) ELSE CAST( por_pol as CHAR(5)) END || '%' ;
WHEN descripcion = 'COC' Then
cHilado1 := titulo || ' COC ' ;
Chilado2 := Chilado2 || ' ' || cHilado1 ;
WHEN descripcion = 'HEATHER' Then
cHilado1 := titulo || ' ' || CASE WHEN cast( left(cast( por_coc as char(10) ), 2) as INTEGER ) > 0 THEN cast( por_coc as char(10) ) ELSE CAST( por_coc as CHAR(5)) END || ' ' || ;
cHilado2 := cHilado2 || TRIM(descripcion) || ' ' || cHilado1 ;
ELSE
cHilado2 = cHilado2 || titulo || ' ' || LEFT(descripcion, 3) || ' ' ||;
SELECT CASE WHEN por_alg = 100 THEN '' ELSE cast( por_alg as char(10)) END ||' '||;
SELECT CASE WHEN por_nyl = 100 THEN '' ELSE cast( por_nyl as char(10)) END ||' '||;
SELECT CASE WHEN por_pol = 100 THEN '' ELSE cast( por_pol as char(10)) END ||' '||;
SELECT CASE WHEN por_lyc = 100 THEN '' ELSE cast( por_lyc as char(10)) END ||' '||;
SELECT CASE WHEN por_coc = 100 THEN '' ELSE cast( por_coc as char(10)) END ||' '||;
SELECT CASE WHEN por_vis = 100 THEN '' ELSE cast( por_vis as char(10)) END ||' '||;
SELECT CASE WHEN por_acr = 100 THEN '' ELSE cast( por_acr as char(10)) END ||' ';
END
RETURN NEXT retorno;
END LOOP;
RETURN cHilado2;
END
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100 ;
________________________________
De: Micky Khan <mcanchas(at)hotmail(dot)com>
Enviado: jueves, 28 de diciembre de 2017 22:24
Para: FORO POSTGRES
Asunto: Re: Recorrer Tabla/cursor y formar un solo dato
Gracias ....
Estoy tratando de resolverlo...
Si hubiera otra manera te agradecería....
<_>
(o o)
( ?? )
<>-<>
Micky Khan
________________________________
De: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Enviado: jueves, 28 de diciembre de 2017 21:57
Para: Micky Khan
Cc: FORO POSTGRES
Asunto: Re: Recorrer Tabla/cursor y formar un solo dato
Micky Khan escribió:
> y me muestra este error :
> ERROR: no coinciden los paréntesis en o cerca de «;»
> LINE 11: ...CAST( cast( por_pol as INTEGER) as CHAR(5) END CASE || '/' ;
Este problema es simple --- te falta el paréntesis que cierra el CAST.
es decir estas líneas
> CASE WHEN por_alg = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_alg as char(10) END CASE ;
> CASE WHEN por_nyl = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_nyl as char(10) END CASE ;
> CASE WHEN por_pol = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_pol as char(10) END CASE ;
> CASE WHEN por_lyc = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_lyc as char(10) END CASE ;
> CASE WHEN por_coc = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_coc as char(10) END CASE ;
> CASE WHEN por_vis = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_vis as char(10) END CASE ;
> CASE WHEN por_acr = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_acr as char(10) END CASE ;
deberían ser
> CASE WHEN por_alg = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_alg as char(10)) END CASE ;
> CASE WHEN por_nyl = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_nyl as char(10)) END CASE ;
> CASE WHEN por_pol = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_pol as char(10)) END CASE ;
> CASE WHEN por_lyc = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_lyc as char(10)) END CASE ;
> CASE WHEN por_coc = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_coc as char(10)) END CASE ;
> CASE WHEN por_vis = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_vis as char(10)) END CASE ;
> CASE WHEN por_acr = 100 THEN cHilado2 := '' ELSE cHilado2 := cHilado2 || cast( por_acr as char(10)) END CASE ;
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.
--
Álvaro Herrera https://www.2ndQuadrant.com/
[https://www.2ndquadrant.com/static/images/logo.png]<https://www.2ndquadrant.com/>
Professional PostgreSQL | 2ndQuadrant<https://www.2ndquadrant.com/>
www.2ndquadrant.com
Stay in touch with us. Subscribe to our monthly newsletter to hear the latest developments from 2ndQuadrant and related technologies. We’ll also send you any ...
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2017-12-29 02:55:12 | Re: Recorrer Tabla/cursor y formar un solo dato |
Previous Message | Micky Khan | 2017-12-28 22:24:48 | Re: Recorrer Tabla/cursor y formar un solo dato |