Để nhận các cột riêng lẻ thay vì loại hàng, hãy gọi hàm với:
SELECT * FROM testfunction();
Giống như bạn chọn tất cả các cột từ một bảng.
Cũng xem xét biểu mẫu đã xem xét này của chức năng kiểm tra của bạn:
CREATE OR REPLACE FUNCTION testfunction()
RETURNS TABLE(a int, b int)
LANGUAGE plpgsql AS
$func$
DECLARE
_a int := 0;
_b int := 0;
BEGIN
CREATE TABLE tempTable AS SELECT _a, _b;
RETURN QUERY SELECT * FROM tempTable;
DROP TABLE tempTable;
END
$func$;
Cụ thể:
DECLARE
từ khóa chỉ cần dùng một lần.
Tránh khai báo các tham số đã được khai báo (ngầm định) là OUT
trong RETURNS TABLE (...)
mệnh đề.
Không sử dụng số nhận dạng caMeL-case chưa được trích dẫn trong Postgres. Nó hoạt động, các số nhận dạng chưa được trích dẫn được chuyển thành chữ thường, nhưng nó có thể dẫn đến các lỗi khó hiểu. Xem:
- Tên cột PostgreSQL có phân biệt chữ hoa chữ thường không?
Bảng tạm thời trong ví dụ này hoàn toàn vô dụng (có thể được đơn giản hóa quá mức). Ví dụ như đã cho tóm tắt thành:
CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
LANGUAGE plpgsql AS
$func$
BEGIN
a := 0;
b := 0;
END
$func$;