Passing the table name as a function argument in PLPGSQL

From: Vincent Ficet <jean-vincent(dot)ficet(at)bull(dot)net>
To: pgsql novice <pgsql-novice(at)postgresql(dot)org>
Subject: Passing the table name as a function argument in PLPGSQL
Date: 2011-06-14 07:26:40
Message-ID: 4DF70D30.90303@bull.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Hello,

Is it possible to pass the name of the table to update to a given function ?

For example, how can I do something like:

CREATE FUNCTION compute_ipaddr(CHARACTER VARYING, INET)
AS $_$
DECLARE
tbl_name ALIAS FOR $1;
module_ipaddr ALIAS FOR $2;
BEGIN
UPDATE tbl_name SET ipaddr = module_ipaddr ....

END;
$_$
LANGUAGE PLPGSQL;

Since this does not work, I have to do

IF tbl_name = 'controller' THEN
UPDATE controller SET ipaddr = module_ipaddr ...
ELSE IF tbl_name = 'server' THEN
UPDATE server SET ipaddr = module_ipaddr ...
[ ...]

Is there a technique to pass the table name and so make the code more
generic ?

Thanks for your help

Vincent

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Maalini Samuganardan 2011-06-14 08:59:13 Scheduling autovacuum
Previous Message Jean-Yves F. Barbier 2011-06-14 02:23:58 Re: permissions PB [SOLVED]