Necesita SQL dinámico con EXECUTE
si desea pasar identificadores (o partes de los mismos) como parámetros:
CREATE OR REPLACE FUNCTION f_trunc(pos text)
RETURNS void AS
$func$
BEGIN
EXECUTE format('TRUNCATE %I', massive_table_ || pos);
END
$func$ LANGUAGE plpgsql;
Aquí hay dos respuestas relacionadas con muchas explicaciones y enlaces:
- INSERTAR con nombre de la tabla dinámica en la función de activación
- Nombre de tabla como Parámetro de función de PostgreSQL