Définir la table et les noms de colonnes comme arguments dans une fonction plpgsql?

Il doit être simple, mais je suis en train de faire mes premiers pas dans Postgres fonctions et je ne peux pas trouver quelque chose qui fonctionne...

J'aimerais créer une fonction qui va modifier un tableau et /ou de la colonne et je ne peux pas trouver la bonne façon de spécifier mes tables et des colonnes comme arguments dans ma fonction.

Quelque chose comme:

CREATE OR REPLACE FUNCTION foo(t table)
RETURNS void AS $$
BEGIN
   alter table t add column c1 varchar(20);
   alter table t add column c2 varchar(20);
   alter table t add column c3 varchar(20);
   alter table t add column c4 varchar(20);
END;
$$ LANGUAGE PLPGSQL;

select foo(some_table)

Dans un autre cas, j'aimerais avoir une fonction qui modifie un certain colonne à partir d'un certain tableau:

CREATE OR REPLACE FUNCTION foo(t table, c column)
RETURNS void AS $$
BEGIN
   UPDATE t SET c = "This is a test";
END;
$$ LANGUAGE PLPGSQL;

Est-il possible de faire cela?

Jetez un oeil à ce post.

OriginalL'auteur fgcartographix | 2013-08-22