DO
команда срещу функция PL/pgSQL
DO
командата не връща редове. Можете да изпращате NOTICES
или RAISE
други съобщения (с език plpgsql) или можете да пишете във (временна) таблица и по-късно SELECT
от него, за да заобиколите това.
Но наистина, създайте вместо това функция (plpgsql), където можете да дефинирате тип връщане с RETURNS
клауза или OUT
/ INOUT
параметри и връщане от функцията по различни начини.
Ако не искате функция да бъде запазена и видима за други връзки, помислете за „временна“ функция, която е недокументирана, но добре установена функция:
- Как да създадем временна функция в PostgreSQL?
generate_series()
за наличен проблем
За разглеждания проблем изглежда не се нуждаете от никакъв от това. Вместо това използвайте тази проста заявка:
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<>цигулка тук
Защо?
- Генериране на времеви серии между две дати в PostgreSQL