У меня есть приложение, в котором пользователь может передать некоторые или все параметры, которые я запрашиваю, приложению. (По сути, он или она может прекратить предоставлять входные данные для различных фрагментов данных, когда они захотят.) На основании предоставленного ими ввода я хочу получить информацию из базы данных MS SQL 2008 только с параметрами, которые они мне дали.
Я представляю что-то подобное, но я не могу заставить его работать, и понятия не имею, может ли это вообще.
CREATE PROCEDURE [dbo].[SearchForSolution]
@Input1 int = 0,
@Input2 int = 0,
@Input3 int = 0,
AS
SELECT Name, SolutionValue
FROM MyTable
WHERE (IF @Input1 != 0) { BETWEEN LowValue AND HighValue }
AND (IF @Input2 != 0) { BETWEEN LowValue AND HighValue }
AND (IF @Input3 != 0) { < HighValue }
RETURN 0
Очевидно, это не рабочий код, но он дает общее представление. Я хочу иметь возможность использовать переменную как часть предложения WHERE, но только если она не использует магическое число (которое в данном случае равно 0).
Я не очень знаком с возможностями SQL здесь и не уверен, возможно ли то, что я хочу сделать. Все, что я пробовал до сих пор, провалилось. Если я полностью иду по неверному пути, я был бы признателен за указатель в правильном направлении.