которая будет принимать параметр , формировать запрос и исполнять его
___________________________________________
Пример функции:
CREATE OR REPLACE FUNCTION qwerty( temp1 text)
RETURNS void
LANGUAGE 'plpgsql'
COST 100
VOLATILE
AS $BODY$
BEGIN
execute 'select * from mytable where data1 = '||temp1||';';
END;
$BODY$;
Боюсь, что в temp1 попадёт что-нибудь очень плохое и будет очень плохо) Как сделать экранирование в таком случае?
Плохо делать так... Подставляй параметр ПАРАМЕТРОМ , а не текстом.
Есть функции работы со строками, типа quote_literal().
Вот за что я люблю PG: Знаю я его не наизусть, но если я что-то хочу сделать, и мне приходит мысль, как это должно быть сделано по уму, то как только я лезу в доку, сразу вижу, что ИМЕННО так и сделано. Единственное исключение -- рекурсивные запросы, я бы предпочёл, чтобы как в Oracle. Но тут уж наверное стандарт сыграл свою роль -- оракловый подход нестандартный.
Обсуждают сегодня