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

PostgreSQL:Làm thế nào để trả về các hàng động từ bảng mà không sử dụng danh sách định nghĩa cột?

Việc xử lý anyelement dưới dạng loại trả lại được mô tả trong Các loại đa hình :

Đối số này trong trường hợp của bạn là relation_name được nhập là anyelement và bằng cách chuyển NULL::table1 , điều này thực sự cho người lập kế hoạch biết rằng lệnh gọi cụ thể này của function1 sẽ trả về SETOF table1 . Cho đến nay rất tốt.

Bây giờ vấn đề là sau khi thực thi, hàm không trả về SETOF table1 nhưng một cái gì đó khác. Đây không phải là điều mà người thực thi mong đợi, do đó xảy ra lỗi.

Mặc dù tiêu đề của câu hỏi là Cách trả lại các hàng động ... , những gì bạn có vẻ muốn là các cột động hoặc tập kết quả đa hình.

Và đây là một cuộc chiến khó khăn với SQL, bởi vì để xây dựng kế hoạch thực thi của một truy vấn, người lập kế hoạch phải biết từng cột với kiểu của nó cho mỗi kết quả trung gian. Nếu bạn thiết kế truy vấn của mình với một hàm phải được thực thi để tìm cấu trúc đầu ra của nó, thì điều đó sẽ tạo ra vấn đề con gà và quả trứng:lập kế hoạch phải thực hiện trước, không thể phụ thuộc vào nó.

Với kỹ thuật nạp kiểu động được áp dụng cho anyelement , PostgreSQL đã thúc đẩy phong bì triển khai càng nhiều tính đa hình càng tốt do ràng buộc này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. gói pg nodejs dẫn đến 'cú pháp nhập không hợp lệ cho kiểu json'

  2. Làm cách nào để chỉ định cơ sở dữ liệu đang hoạt động hiện tại cho tập lệnh khởi tạo của vùng chứa postgres docker?

  3. Có cách nào để tắt cập nhật / xóa nhưng vẫn cho phép trình kích hoạt thực hiện chúng không?

  4. PostgreSQL GIẢI THÍCH - Chi phí Truy vấn là gì?

  5. 2 cách trả về hàng có chứa ký tự không phải chữ và số trong PostgreSQL