2015-02-11 2 views
0

У меня есть хранимая процедура, в которой у меня есть переменная, которая может быть нулевой или установлена ​​для идентификатора. Я хочу иметь предложение where, только если переменная не равна нулю.Если в хранимой процедуре

Вот мой код:

DECLARE @managerID int; 
SET @managerID = null; 
SET @managerID = 6 //This value will come by parameter through stored procude 
Select * from Provision 
where manager = @managerID //This should only be here, when the managerID is not null 
+1

dbms? (Совсем не похож на ANSI SQL ...) – jarlh

ответ

0

@managerID возвращает истину, если она равна нулю, и он будет возвращать все строки

DECLARE @managerID int; 
SET @managerID = null; 
SET @managerID = 6 
Select * from Provision 
where manager = @managerID OR @managerID is null 
2

Вы можете сделать:

where manager = @managerID or @ManagerId is null 

Однако, если вы делаете это из приложения, вам может понадобиться построить предложение where на условиях. Оптимизаторы базы данных имеют трудное время с or в предложении from, поэтому лучше всего иметь список условий для соединения по and.

Смежные вопросы