У меня есть страница asp.net, которая позволяет пользователю выполнять поиск в базе данных, создавая предложение where для включения в хранимую процедуру. Проблема заключается в том, что процедура должна учитывать неизвестное количество параметров для разных условий. Слишком упрощенный пример мог бы выглядеть примерно так:Создание динамического пользовательского запроса без ограничений по параметрам в SQL
SELECT [Column1] FROM [TableName] WHERE 1=1
--Everything below user generated
AND
(
([Column2] = '1' AND [Column3] = '5' AND [Column4] = '9') OR
([Column2] = '2' AND [Column3] = '6' AND [Column4] = '8') OR
...
([Column2] = '25' AND [Column3] = '3' AND [Column4] = '1')
)
AND [Column5] BETWEEN '10' AND '200'
Мне было интересно, какое лучшее решение для этого было бы. Я знаю, что я могу построить предложение where в виде строки и передать его в хранимую процедуру как один большой параметр и выполнить лот как динамический sql, но что было бы лучшим решением?
Как насчет просмотра LINQ? –
Если это действительно так динамично, было бы проще сделать это просто с динамическим SQL без хранимой процедуры? –
@JamesZ Эта часть запроса является частью гораздо более крупной ранее существующей хранимой процедуры, на которую ссылаются в нескольких других местах. – wheresmyducky