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