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

Bảng dưới dạng đối số của một hàm PostgreSQL

Bạn không thể chuyển một bảng chẳng hạn như một tham số, chỉ tên của bảng:

CREATE FUNCTION test.fcttest(tbl text) RETURNS SETOF test.out_table AS $$
BEGIN
  EXECUTE format('INSERT INTO test.out_table '
                   'SELECT id, another_field FROM %I', tbl);
  RETURN QUERY EXECUTE format('SELECT id, another_field FROM %I', tbl);
END;
$$ LANGUAGE plpgsql;

Khi truyền một tên bảng, bạn cần thực hiện một lệnh động. Bạn chỉ có thể làm điều này trong một hàm plpgsql. Việc sử dụng format() hàm với %I công cụ sửa đổi bảo vệ khỏi việc đưa vào SQL. Các hàng được trả về bằng cách sử dụng RETURN NEXT QUERY một lần nữa bằng một lệnh động.

Lưu ý rằng logic này cả hai chèn một tập hợp các bản ghi vào bảng test.out_table và sau đó trả về cùng một tập hợp các bản ghi. Không chắc đó có phải là điều bạn thực sự muốn hay không.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi kiểu dữ liệu của một cột thành nối tiếp

  2. Rails Console tìm người dùng theo mảng id

  3. PostgreSQL:giữa với datetime

  4. nhận id của nhiều hàng được chèn vào psycopg2

  5. Đăng ký và chạy PostgreSQL 9.0 dưới dạng Dịch vụ Windows