DO
comando frente a función PL/pgSQL
El DO
El comando no devuelve filas. Puede enviar NOTICES
o RAISE
otros mensajes (con lenguaje plpgsql) o puede escribir en una tabla (temporal) y luego SELECT
de él para evitar esto.
Pero en realidad, cree una función (plpgsql) en su lugar, donde puede definir un tipo de retorno con RETURNS
cláusula o OUT
/ INOUT
parámetros y retorno de la función de varias maneras.
Si no quiere una función guardada y visible para otras conexiones, considere una función "temporal", que es una característica no documentada pero bien establecida:
- ¿Cómo crear una función temporal en PostgreSQL?
generate_series()
para el problema en cuestión
Para el problema en cuestión, parece que no necesita ninguna de esta. Utilice esta consulta simple en su lugar:
SELECT row_number() OVER () AS running_month
, extract('year' FROM m) AS year
, extract('month' FROM m) AS month
FROM generate_series(timestamp '2012-04-01'
, timestamp '2016-01-01'
, interval '1 month') m;
db<>violín aquí
¿Por qué?
- Generando series de tiempo entre dos fechas en PostgreSQL