Sie benötigen dynamisches SQL mit EXECUTE
wenn Sie Bezeichner (oder Teile davon) als Parameter übergeben möchten:
CREATE OR REPLACE FUNCTION f_trunc(pos text)
RETURNS void AS
$func$
BEGIN
EXECUTE format('TRUNCATE %I', massive_table_ || pos);
END
$func$ LANGUAGE plpgsql;
Hier sind zwei verwandte Antworten mit vielen Erklärungen und Links:
- INSERT with Dynamischer Tabellenname in Triggerfunktion
- Tabellenname als PostgreSQL-Funktionsparameter