2011/3/2 Merlin Moncure <mmonc...@gmail.com> > On Tue, Mar 1, 2011 at 5:17 PM, Pavel Stehule <pavel.steh...@gmail.com> > wrote: > > Hello > > > > 2011/3/2 Pierre Racine <pierre.rac...@sbf.ulaval.ca>: > >> 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 > > > > EXECUTE 'SELECT ' || callback || '($1)' USING y INTO x; > > > > there are no other way than EXECUTE > > > > attention - there is a sql injection risk > > another way if you are willing to write some C is to wrap and expose > OidFunctionCall1 so it takes oid of function you want to call. > As always, Merlin shows the uncommon thinking! :-) Respect!
> > merlin > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general > -- // Dmitriy.