From: | Dmitriy Igrishin <dmitigr(at)gmail(dot)com> |
---|---|
To: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
Cc: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, Pierre Racine <Pierre(dot)Racine(at)sbf(dot)ulaval(dot)ca>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Dynamic binding in plpgsql function |
Date: | 2011-03-02 14:34:42 |
Message-ID: | AANLkTi=OPgTtR983HeK7Q-=_rK1npggmJHnx_kt_wVOh@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
2011/3/2 Merlin Moncure <mmoncure(at)gmail(dot)com>
> On Tue, Mar 1, 2011 at 5:17 PM, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
> wrote:
> > Hello
> >
> > 2011/3/2 Pierre Racine <Pierre(dot)Racine(at)sbf(dot)ulaval(dot)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(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>
--
// Dmitriy.
From | Date | Subject | |
---|---|---|---|
Next Message | Merlin Moncure | 2011-03-02 14:41:59 | Re: pg_dump slow with bytea data |
Previous Message | suresh ramasamy | 2011-03-02 14:31:00 | how are you? |