powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Динамический запрос со строкой с кавычками
4 сообщений из 4, страница 1 из 1
Динамический запрос со строкой с кавычками
    #33765112
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В процедуру (pl/pgsql - pg 8.1.3) передается строка, содержащая кавычки (при передаче в эту функцию кавычки удвоены). Эта же строка участвует в формировании динамического запроса. При выполнении происходит синтаксическая ошибка - кавычки одинарные, что и можно ожидать.
Как делать правильно? Я могу конечно извратиться и опять их удвоить, но может есть ПРАВИЛЬНОЕ решение?

Код вроде этого:

CREATE OR REPLACE FUNCTION XXX(str_ "varchar")
RETURNS void AS
$BODY
DECLARE
s "varchar";
$BEGIN
s := 'UPDATE x_table SET name=''' || str_ || ''' ';
RAISE NOTICE 'query: %',s;
EXECUTE s;

RETURN;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;

вызывается так

SELECT XXX('my ''''''x-string'); --6 кавычек
...
Рейтинг: 0 / 0
Динамический запрос со строкой с кавычками
    #33765116
-me-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s := 'UPDATE x_table SET name=''' || quote_literal(str_) || ''' ';
...
Рейтинг: 0 / 0
Динамический запрос со строкой с кавычками
    #33765118
-me-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точнее, так (лишние кавыки :)
s := 'UPDATE x_table SET name=' || quote_literal(str_) ;
...
Рейтинг: 0 / 0
Динамический запрос со строкой с кавычками
    #33765125
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Получилось как всегда - "смотрю в книгу - вижу фигу"!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Динамический запрос со строкой с кавычками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]