DO
příkaz vs. funkce PL/pgSQL
DO
příkaz nevrací řádky. Můžete poslat NOTICES
nebo RAISE
jiné zprávy (s jazykem plpgsql) nebo můžete zapisovat do (dočasné) tabulky a později SELECT
z toho, abyste to obešli.
Ale ve skutečnosti místo toho vytvořte funkci (plpgsql), kde můžete definovat návratový typ pomocí RETURNS
klauzule nebo OUT
/ INOUT
parametry a návrat z funkce různými způsoby.
Pokud nechcete, aby byla funkce uložena a viditelná pro ostatní připojení, zvažte „dočasnou“ funkci, což je nezdokumentovaná, ale dobře zavedená funkce:
- Jak vytvořit dočasnou funkci v PostgreSQL?
generate_series()
pro problém po ruce
Zdá se, že pro daný problém nepotřebujete žádné z toho. Místo toho použijte tento jednoduchý dotaz:
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<>zde hrajte
Proč?
- Generování časových řad mezi dvěma daty v PostgreSQL