SQL StoredProcedure с необязательными параметрами - PullRequest
1 голос
/ 13 августа 2010

В моем приложении есть форма с полями фильтра.Ничего не требуется, если пользователь вводит значение, которое мне нужно предоставить в качестве параметров в предложении where.

Хотя я не знаю, как справиться с этим в моей хранимой процедуре.

например, следующая хранимая процедура:

--parameters
@customername varchar(50),

SELECT * from ORDERS
WHERE customername = @customername

, поэтому, если пользователь вводит имя клиента, то, конечно, он будет возвращать все с этим именем клиента, если пользователь не вводит имя пользователя, ему нужно все вернуть.Как я могу сделать это в этом заявлении?есть ли подстановочный знак, который я могу передать, если пользователь не ввел имя клиента?Или мне нужна отдельная процедура.Я надеюсь, что это имеет смысл, спасибо!

Ответы [ 4 ]

4 голосов
/ 13 августа 2010

Попробуйте это

--parameters
@customername varchar(50) = NULL,

SELECT * from ORDERS
WHERE customername = COALESCE(@customername, customername)

За комментарий, который необходимо вернуть именам клиентов, которые являются нулевыми. Это интегрировано с Russ '.

SELECT * from ORDERS
WHERE (customername = COALESCE(@customername, customername)
 OR customername IS NULL)
3 голосов
/ 13 августа 2010
SELECT * from ORDERS 
WHERE customername = @customername or @customername is null
1 голос
/ 13 августа 2010

См. Эту ссылку для некоторых идей, а также плюсы и минусы различных подходов к условным операторам, где:

http://www.sqlservercentral.com/articles/T-SQL/61918/

0 голосов
/ 13 августа 2010

Вы можете написать оператор if в вашем хранимом процессе.Вот так.

IF @customername is null
BEGIN
  SELECT * FROM ORDERS
END
ELSE
BEGIN
  SELECT * FROM ORDERS WHERE customername = @customername
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...