DO
lệnh so với hàm PL / pgSQL
DO
lệnh không trả về hàng. Bạn có thể gửi NOTICES
hoặc RAISE
các thư khác (với ngôn ngữ plpgsql) hoặc bạn có thể ghi vào bảng (tạm thời) và sau đó SELECT
từ nó để giải quyết vấn đề này.
Nhưng thực sự, hãy tạo một hàm (plpgsql) để thay thế, nơi bạn có thể xác định kiểu trả về bằng RETURNS
mệnh đề hoặc OUT
/ INOUT
và trả về từ hàm theo nhiều cách khác nhau.
Nếu bạn không muốn một chức năng được lưu và hiển thị cho các kết nối khác, hãy xem xét một chức năng "tạm thời", là một tính năng không có tài liệu nhưng được thiết lập tốt:
- Cách tạo một hàm tạm thời trong PostgreSQL?
generate_series()
cho vấn đề trong tầm tay
Đối với vấn đề đang xảy ra, bạn dường như không cần bất kỳ điều này. Sử dụng truy vấn đơn giản này để thay thế:
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 <> fiddle here
Tại sao?
- Tạo chuỗi thời gian giữa hai ngày trong PostgreSQL