Re: Dynamic binding in plpgsql function
От | Pavel Stehule |
---|---|
Тема | Re: Dynamic binding in plpgsql function |
Дата | |
Msg-id | AANLkTikmzTNN2z6ZLd8u6erSgM1-GSN8iH-WZTQd+h8Z@mail.gmail.com обсуждение исходный текст |
Ответ на | Dynamic binding in plpgsql function (Pierre Racine <Pierre.Racine@sbf.ulaval.ca>) |
Ответы |
Re: Dynamic binding in plpgsql function
|
Список | pgsql-general |
Hello 2011/3/2 Pierre Racine <Pierre.Racine@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 generalfunction 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 regards Pavel Stehule > 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 resultingvalue directly to a variable like in my example. > > Can I/How can I achieve this? > > Thanks, > > Pierre > > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general >
В списке pgsql-general по дате отправления: