@Vlad1987
учу Python

Как вставить аргумент функции между $$ $$ строкой в PostgreSQL?

Всем привет!

У меня есть здоровая функция и экранировать ковычки ковычками и слешами там крайне запарно(по крайней мере для меня:) ) Я решил воспользоваться $$.

Суть вопроса:

К примеру у меня есть функция вида:

CREATE OR REPLACE FUCNTION example(arg int)
RETURNS int4
LANGUAGE plpgsql
AS $$

   BEGIN
   --function body
   somequery := $q1$ SELECT field*arg FROM randomtable  $q1$
   EXECUTE somequery;
   END
   $$


И вот в таком формате arg - это всего лишь часть строки. Как мне передать туда реальный arg из аргумента функции?

Заранее спасибо!
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Напрямую запросом, без лишнего execute
CREATE OR REPLACE FUNCTION example(arg int)
RETURNS int4
LANGUAGE plpgsql
AS $$
declare
   out int;
   BEGIN
   --function body
   SELECT field * arg into out FROM randomtable;
   return out;
   END
   $$;
select example(1);


Или, если действительно нужно генерировать динамический SQL, то передать параметром в using:
CREATE OR REPLACE FUNCTION example(arg int)
RETURNS int4
LANGUAGE plpgsql
AS $$
declare
   out int;
   somequery text;
   BEGIN
   --function body
   somequery := $q1$ SELECT field * $1 FROM randomtable $q1$;
   EXECUTE somequery into out using arg;
   return out;
   END
   $$;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы