Re: Transformar un procedimiento Firebird a PostgreSQL

From: José Vicente Zahonero García <jovizaga(at)hotmail(dot)com>
To: Anthony Sotolongo <asotolongo(at)gmail(dot)com>, Lautaro Palamidessi <lpalamidessi(at)conexia(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Transformar un procedimiento Firebird a PostgreSQL
Date: 2019-05-31 20:05:44
Message-ID: VI1PR0401MB2653D763F129DC9F365FF366C8190@VI1PR0401MB2653.eurprd04.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias, pero podríais ponerme un ejemplo del uso de esas funciones, no las he usado nunca. Gracias. Saludos.

________________________________________
De: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
Enviat: divendres, 31 de maig de 2019 18:20
A: Lautaro Palamidessi; José Vicente Zahonero García
A/c: pgsql-es-ayuda(at)postgresql(dot)org
Tema: Re: Transformar un procedimiento Firebird a PostgreSQL

Hola José, coincido con Lautaro evalúa el uso de la función ventana LAG o LEAD, en dependencia del criterio de ordenamiento que requieras y tal vez ni necesites un hacer un procedimiento para eso, solo con la consulta podrás obtenerlo.

Saludos

El 31-05-19 a las 11:36, Lautaro Palamidessi escribió:
Buen dia, usa la funcionalidad LAG de las window functions: https://www.postgresql.org/docs/current/functions-window.html

Saludos

El vie., 31 may. 2019 a las 12:22, José Vicente Zahonero García (<jovizaga(at)hotmail(dot)com<mailto:jovizaga(at)hotmail(dot)com>>) escribió:
Hola de nuevo, tengo un procedimiento en Firebird que recorre una tabla comparando un registro con el inmediatamente posterior y que devuelve la mayor diferencia entre dos registros consecutivos. No sé como implementarlo en PostgreSQL. ¿Puede alguien echarme una mano?. Gracias.

CREATE OR ALTER PROCEDURE DIAS_SIN RETURNS (
"RESULT" INTEGER
)
AS
DECLARE VARIABLE AUX INTEGER;
BEGIN
AUX = 0;
RESULT = 0;
FOR
SELECT max(DATEDIFF(DAY FROM DT2.FECHA TO DT1.FECHA))
FROM DATOS DT1, DATOS DT2
WHERE DT1.SALIDA_NUM = DT2.SALIDA_NUM + 1
INTO :AUX
DO
IF(AUX > RESULT) THEN RESULT = AUX;
SUSPEND;
END

--

[logo conexia]<http://conexia.com/>

Lautaro Palamidessi
Consultor Técnico DBA
T: +5411 5173 6159

[facebook conexia]<https://goo.gl/OxO8kd> [twitter conexia] <https://goo.gl/XGpgl3> [linkedin conexia] <https://goo.gl/epcLtV> www.conexia.com<http://conexia.com/>

[http://conexia.com/imgfirma/legales.jpg]

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos T. Groero Carmona 2019-05-31 21:23:57 Re: Particionamiento de tablas postgresql 11
Previous Message Alvaro Herrera 2019-05-31 18:51:13 Re: POSTGRES autovacumm launcher postgres