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