powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Процедура с большим количеством Null-абл параметров
2 сообщений из 2, страница 1 из 1
Процедура с большим количеством Null-абл параметров
    #39883050
Nimua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите как в PostgreSQL нормально написать процедуру вида

search_data(param1, param2, param3, param4, param5)

где все параметры могут быть Null в разном их сочетании
и обычно плохой запрос выглядит вот так

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT * 
FROM table
WHERE column1 = COALESCE(param1, column1)
     AND column2 = COALESCE(param2, column2)
     AND column3 = COALESCE(param3, column3)
     AND column4 = COALESCE(param4, column4)
     AND column5 = COALESCE(param5, column5)



В MS SQL есть паттерн kitchen sink и рекомендуется в этом случае использовать динамический SQL и генерировать запрос по параметрам, которые не NULL,
как лучше поступить в PostgreSQL? гугление не дало ответа, возможно не правильно формулирую запрос.

И второй вопрос - если нужно использовать динамический SQL в постгрес, то есть ли именная подстановка параметров?
Конкатенация кажется совсем неверным способом,
но и подстановка вида % тоже кажется не лучшим вариантом, потому что получается можно налажать с порядком параметров.

PostgreSQL версия 11, запрос внутри функции

Спасибо!
...
Рейтинг: 0 / 0
Процедура с большим количеством Null-абл параметров
    #39883056
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nimua,

Можете использовать динамические запросы в plpgsql.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Процедура с большим количеством Null-абл параметров
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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