PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Trả về bản ghi setof (bảng ảo) từ hàm

(Tất cả điều này đều được thử nghiệm với postgresql 8.3.7-- bạn có phiên bản cũ hơn không? Chỉ cần xem xét việc bạn sử dụng "ALIAS FOR $ 1")

CREATE OR REPLACE FUNCTION storeopeninghours_tostring(numeric)
 RETURNS SETOF RECORD AS $$
DECLARE
 open_id ALIAS FOR $1;
 result RECORD;
BEGIN
 RETURN QUERY SELECT '1', '2', '3';
 RETURN QUERY SELECT '3', '4', '5';
 RETURN QUERY SELECT '3', '4', '5';
END
$$;

Nếu bạn có biến bản ghi hoặc biến hàng cần trả về (thay vì kết quả truy vấn), hãy sử dụng "QUAY LẠI TIẾP THEO" thay vì "QUAY LẠI QUERY".

Để gọi hàm, bạn cần thực hiện một số việc như:

select * from storeopeninghours_tostring(1) f(a text, b text, c text);

Vì vậy, bạn phải xác định những gì bạn mong đợi lược đồ hàng đầu ra của hàm sẽ có trong truy vấn. Để tránh điều đó, bạn có thể chỉ định các biến đầu ra trong định nghĩa hàm:

CREATE OR REPLACE FUNCTION storeopeninghours_tostring(open_id numeric, a OUT text, b OUT text, c OUT text)
 RETURNS SETOF RECORD LANGUAGE 'plpgsql' STABLE STRICT AS $$
BEGIN
 RETURN QUERY SELECT '1'::text, '2'::text, '3'::text;
 RETURN QUERY SELECT '3'::text, '4'::text, '5'::text;
 RETURN QUERY SELECT '3'::text, '4'::text, '5'::text;
END
$$;

(không chắc tại sao bổ sung ::phôi văn bản lại được yêu cầu ... '1' có thể là một varchar theo mặc định?)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL tương đương cho TOP n CÓ TIES:GIỚI HẠN với quan hệ?

  2. lỗi lệnh sử dụng alembic không thể tìm thấy mã định danh

  3. Lược đồ Django và postgresql

  4. 5 cách để kiểm tra xem một bảng có tồn tại trong PostgreSQL hay không

  5. Timezone_types khác nhau trên đối tượng DateTime