DO
polecenie a funkcja PL/pgSQL
DO
polecenie nie zwraca wierszy. Możesz wysłać NOTICES
lub RAISE
inne komunikaty (z językiem plpgsql) lub możesz pisać do (tymczasowej) tabeli, a później SELECT
z niego, aby to obejść.
Ale tak naprawdę, zamiast tego utwórz funkcję (plpgsql), w której możesz zdefiniować typ zwracany za pomocą RETURNS
klauzula lub OUT
/ INOUT
parametry i powrót z funkcji na różne sposoby.
Jeśli nie chcesz, aby funkcja była zapisana i widoczna dla innych połączeń, rozważ funkcję „tymczasową”, która jest nieudokumentowaną, ale dobrze znaną funkcją:
- Jak utworzyć funkcję tymczasową w PostgreSQL?
generate_series()
problem pod ręką
W przypadku problemu wydaje się, że nie potrzebujesz żadnego tego. Zamiast tego użyj tego prostego zapytania:
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<>graj tutaj
Dlaczego?
- Generowanie szeregów czasowych między dwiema datami w PostgreSQL