如果在存储过程中的位置

时间:2015-02-11 13:18:14

标签: sql

我有一个存储过程,其中我有一个变量,可以为null或为ID设置。 我希望只有在变量不为null时才有一个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

2 个答案:

答案 0 :(得分:2)

你可以这样做:

where manager = @managerID or @ManagerId is null

但是,如果从应用程序执行此操作,则可能需要根据条件构造where子句。数据库优化器在or子句中很难使用from,因此最好只有一个条件列表and连接。

答案 1 :(得分:0)

@managerID如果为null则返回true,它将返回所有行

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