U kunt een tabel niet als parameter doorgeven, alleen de naam van de 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;
Bij het doorgeven van een tabelnaam moet u een dynamisch commando uitvoeren. U kunt dit alleen doen in een plpgsql-functie. Het gebruik van het format()
functie met de %I
modifier beschermt tegen SQL-injectie. De rijen worden geretourneerd met de RETURN NEXT QUERY
zin, opnieuw met een dynamisch commando.
Merk op dat deze logica beide voegt een set records toe aan tabel test.out_table
en retourneert vervolgens dezelfde set records. Ik weet niet zeker of dat is wat je echt wilt.