Hai bisogno di SQL dinamico con EXECUTE
se vuoi passare degli identificatori (o parti di essi) come parametri:
CREATE OR REPLACE FUNCTION f_trunc(pos text)
RETURNS void AS
$func$
BEGIN
EXECUTE format('TRUNCATE %I', massive_table_ || pos);
END
$func$ LANGUAGE plpgsql;
Ecco due risposte correlate con molte spiegazioni e collegamenti:
- INSERT con nome della tabella dinamica nella funzione trigger
- Nome tabella come Parametro della funzione PostgreSQL