Ngoài ra còn có tùy chọn sử dụng RETURNS TABLE(...)
(như được mô tả trong Hướng dẫn sử dụng PostgreSQL
), mà cá nhân tôi thích:
CREATE OR REPLACE FUNCTION get_countries()
RETURNS TABLE(
country_code text,
country_name text
)
AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
Điều này thực sự giống như sử dụng SETOF tablename
, nhưng khai báo cấu trúc bảng nội dòng thay vì tham chiếu đến một đối tượng hiện có, vì vậy các phép nối và các phép nối đó sẽ vẫn hoạt động.