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.

Reply via email to