Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Динамическое фильтрование таблицы  [new]
euthanatos
Member

Откуда:
Сообщений: 33
Здравствуйте,

Возможно ламерский вопрос, но MSSQL ставит меня в тупик ((

Нужно дать пользователю вытащить записи, удволетворяющие ряду условий (которые связываются через AND), наподобие:
WHERE Field_1 like N'%1%' AND Field_2 like N'%D%'


Но проблема в том, что конечный список полей, по которым будем вытаскивать на момент компиляции функции/процедуры не известен (что пользователь в интерфейсе заполнил - по тем условиям и надо вытащить).

То есть в идеале так: мы передаем строку параметров в функцию, а она возвращает нам таблицу с соответствующими условиям записями.

Кто как решал подобные проблемы фильтрования на стороне сервера?

Лучшее до чего я пока дошел, это разложение строки параметров на таблицу пар "параметр-значение", и поптыка динамически слепить SQL-строку по этим данным, но MSSQL отказывается выполнять "INSERT EXEC" внутри функции по причине (как сказано на сайте мелкософт) того, что парсер не может быть уверен в том, что исполняемая строка не делает ничего недопустимого для функций.

Конечно можно было бы отдать задачу фильтрования клиентской части, но в теории если сервер каждый раз будет вываливать на неё таблицу по нескольку миллионов записей.. Сами понимаете.
21 фев 13, 07:45    [13958480]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое фильтрование таблицы  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
euthanatos,

Почитайте здесь, там этот вопрос подробно разобран Dynamic Search Conditions in T-SQL
21 фев 13, 08:20    [13958512]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое фильтрование таблицы  [new]
euthanatos
Member

Откуда:
Сообщений: 33
Ruuu, благодарю
21 фев 13, 08:39    [13958568]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить