DO kommando kontra PL/pgSQL-funktion
DO kommandot returnerar inte rader. Du kan skicka NOTICES eller RAISE andra meddelanden (med språk plpgsql) eller så kan du skriva till en (tillfällig) tabell och senare SELECT från det för att komma runt detta.
Men egentligen, skapa en (plpgsql) funktion istället, där du kan definiera en returtyp med RETURNS sats eller OUT / INOUT parametrar och retur från funktionen på olika sätt.
Om du inte vill ha en funktion sparad och synlig för andra anslutningar, överväg en "tillfällig" funktion, som är en odokumenterad men väletablerad funktion:
- Hur skapar man en tillfällig funktion i PostgreSQL?
generate_series() för problem till hands
För det aktuella problemet verkar du inte behöva några av detta. Använd den här enkla frågan istället:
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<>spela här
Varför?
- Genererar tidsserier mellan två datum i PostgreSQL