powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Динамический запрос с возвратом результирующего набора
7 сообщений из 7, страница 1 из 1
Динамический запрос с возвратом результирующего набора
    #39924036
Шамиль Фаридович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток. Мне нужен аналог sp_executesql из MS SQL.
А сделать мне нужно что-то вроде:
Код: plsql
1.
2.
EXECUTE 'SELECT * FROM  tbTest WHERE ID > $1;'
   USING minID;


Чтобы оно банально вернуло резалтсет (делается это внутри хранимой процедуры)
...
Рейтинг: 0 / 0
Динамический запрос с возвратом результирующего набора
    #39924053
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шамиль Фаридович
Доброго времени суток. Мне нужен аналог sp_executesql из MS SQL.
А сделать мне нужно что-то вроде:
Код: plsql
1.
2.
EXECUTE 'SELECT * FROM  tbTest WHERE ID > $1;'
   USING minID;


Чтобы оно банально вернуло резалтсет (делается это внутри хранимой процедуры)


А что именно у вас не получается???
https://www.postgresql.org/docs/12/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
в документации все разобрано.
Ну или если вам больше 1 строки надо обработать то
https://www.postgresql.org/docs/12/plpgsql-control-structures.html#PLPGSQL-RECORDS-ITERATING
(в конце там как с execute при loop работать описано).

Все есть в документации. ))
...
Рейтинг: 0 / 0
Динамический запрос с возвратом результирующего набора
    #39924415
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шамиль Фаридович,

Еще можно через 40.7.2.2. OPEN FOR EXECUTE . А курсор уже можно передать куда угодно.
...
Рейтинг: 0 / 0
Динамический запрос с возвратом результирующего набора
    #39924996
Шамиль Фаридович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После ознакомления с вашими ссылками я решил сделать немного по другому:
моя функция в цикле соберет во временную таблицу необходимые данные, а потом просто вернет ее.
Но почему не работает вот такая простейшая конструкция?
Код: plsql
1.
execute 'INSERT INTO tbtest (id,decim) values(6, 0.16);';



Сообщение
Код: plsql
1.
2.
3.
ОШИБКА:  ошибка синтаксиса (примерное положение: "'INSERT INTO tbtest (id,decim) values(6, 0.16);'")
SQL state: 42601
Character: 9


мне ни о чем не говорит, ведь эта же конструкция без EXECUTE спокойно отрабатывает.
...
Рейтинг: 0 / 0
Динамический запрос с возвратом результирующего набора
    #39925080
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шамиль Фаридович,

EXECUTE - оператор языка PL/pgSQL, следовательно результат выполнения мы можем увидеть используя его, либо в функции, либо в и анонимном блоке

Код: plsql
1.
2.
3.
4.
5.
6.
DO 
$$
BEGIN 
	EXECUTE 'INSERT INTO tbtest (id,decim) VALUES(6,  .16)';
END;
$$
...
Рейтинг: 0 / 0
Динамический запрос с возвратом результирующего набора
    #39925144
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шамиль Фаридович
После ознакомления с вашими ссылками я решил сделать немного по другому:
моя функция в цикле соберет во временную таблицу необходимые данные, а потом просто вернет ее.


На всякий случай - создание и удаление временных таблиц в postgresql - штука очень дорогая по ресурсам.
Поэтому в простых и часто вызываемых (часто - раз в секунду это уже часто в этом случае) случаях их категорически не рекомендуется использовать.

Временные таблицы (в версии postgresq) - больше для сложной аналитики и ETL задач сделаны.
...
Рейтинг: 0 / 0
Динамический запрос с возвратом результирующего набора
    #39925693
Шамиль Фаридович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint, Maxim Boguk
Спасибо!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Динамический запрос с возвратом результирующего набора
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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