PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Tabel sebagai argumen dari fungsi PostgreSQL

Anda tidak dapat melewatkan tabel seperti parameter, hanya nama tabel:

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;

Saat memberikan nama tabel, Anda perlu menjalankan perintah dinamis. Anda hanya dapat melakukan ini dalam fungsi plpgsql. Penggunaan format() fungsi dengan %I pengubah melindungi terhadap injeksi SQL. Baris dikembalikan menggunakan RETURN NEXT QUERY frase, sekali lagi dengan perintah dinamis.

Perhatikan bahwa logika ini keduanya menyisipkan satu set catatan ke dalam tabel test.out_table dan kemudian mengembalikan kumpulan catatan yang sama. Tidak yakin apakah itu yang Anda inginkan.




  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 unnest() dengan nomor elemen

  2. 2ndQuadrant Deutschland – Tawar-menawar Pembukaan Pelatihan Khusus

  3. PostgreSQL EXPLAIN – Berapa Biaya Kueri?

  4. Bagaimana Atan2() Bekerja di PostgreSQL

  5. Bahasa prosedural PostgreSQL C tidak ditemukan