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.