Построение предложения WHERE программно, а затем передача его в SQL в качестве параметра
В моем проекте asp.net есть случаи, когда функция фильтра на стороне сервера в C# создает SQL WHERE
затем передать его в хранимую процедуру SQL, например,
Фильтр создает строковую переменную со значением типа "WHERE Qty < 5 AND Price > 10
".
Соответствующая часть хранимой процедуры выглядит так:
Exec (‘
Select Name, Location
From Users
+ ‘@passedInWhereClause’
‘)
Как видите, мы должны сделать EXEC
команда на строке, построенной с переданной переменной, содержащей where
предложение, которое было сгенерировано кодом C# на стороне сервера. Мне бы очень хотелось, чтобы устранить EXEC
и сделать код SQL более профессиональным, вместо гигантской строки, завернутой в EXEC
, Есть ли лучший способ сделать это?
2 ответа
Вы должны рассмотреть дополнительные параметры, пример
WHERE (@Type = NULL OR @Type = '' OR @Type = Type)
Это позволяет вам передавать пустое или пустое значение в SP, чтобы игнорировать предложение where, или вы передаете значение для применения предложения where.
Нет, нет лучшего способа сделать это, так как вы создаете Dynamic SQL для выполнения.
Если вы хотите сделать это лучше, не запускайте Dynamic SQL.