DO perintah vs. fungsi PL/pgSQL
DO perintah tidak mengembalikan baris. Anda dapat mengirim NOTICES atau RAISE pesan lain (dengan bahasa plpgsql) atau Anda dapat menulis ke tabel (sementara) dan kemudian SELECT dari itu untuk menyiasatinya.
Tapi sungguh, buat fungsi (plpgsql) sebagai gantinya, di mana Anda dapat menentukan tipe pengembalian dengan RETURNS klausa atau OUT / INOUT parameter dan kembali dari fungsi dengan berbagai cara.
Jika Anda tidak ingin fungsi disimpan dan terlihat untuk koneksi lain, pertimbangkan fungsi "sementara", yang merupakan fitur yang tidak didokumentasikan tetapi sudah mapan:
- Bagaimana cara membuat fungsi sementara di PostgreSQL?
generate_series() untuk masalah yang dihadapi
Untuk masalah yang ada, Anda sepertinya tidak membutuhkan apa pun ini. Gunakan kueri sederhana ini sebagai gantinya:
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<>main biola di sini
Mengapa?
- Membuat deret waktu antara dua tanggal di PostgreSQL