Vous avez besoin de SQL dynamique avec EXECUTE
si vous souhaitez passer des identifiants (ou des parties de ceux-ci) en tant que paramètres :
CREATE OR REPLACE FUNCTION f_trunc(pos text)
RETURNS void AS
$func$
BEGIN
EXECUTE format('TRUNCATE %I', massive_table_ || pos);
END
$func$ LANGUAGE plpgsql;
Voici deux réponses connexes avec beaucoup d'explications et de liens :
- INSÉRER avec nom de table dynamique dans la fonction de déclenchement
- Nom de table en tant que Paramètre de la fonction PostgreSQL