Dynamic binding in plpgsql function

From: Pierre Racine <Pierre(dot)Racine(at)sbf(dot)ulaval(dot)ca>
To: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Dynamic binding in plpgsql function
Date: 2011-03-01 23:01:36
Message-ID: 87A96661E65C5541AB4D20721C2DD7F88DAED99030@EXCH-MBX-A.ulaval.ca
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

I would like to write a generic plpgsql function with a text parameter being a callback function name so that my general function can call this callback function. e.g.:

CREATE OR REPLACE FUNCTION ST_MyCallbackFunction(y int)
RETURNS int AS $$
DECLARE
BEGIN
RETURN someCalculationBasedOnY;
END;
$$ LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION ST_MyGeneralFunction(callback text)
RETURNS SETOF geomval AS $$
DECLARE
x integer;
y integer;
BEGIN
y := somecalculation;
x := 'callback'(y); --This is what I need
RETURN x;
END;
$$ LANGUAGE 'plpgsql';

I don't want to do an EXECUTE statement since I have no table to put after the FROM clause. I want to assign the resulting value directly to a variable like in my example.

Can I/How can I achieve this?

Thanks,

Pierre

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pavel Stehule 2011-03-01 23:17:14 Re: Dynamic binding in plpgsql function
Previous Message hubert depesz lubaczewski 2011-03-01 22:17:17 What could cause sudden increase in "PARSE" stage of prepared statements?