CREATE PROCEDURE [GetSubscriptions]
@id uniqueidentifier,
@isActive bit
AS
BEGIN
SELECT
*
FROM SUBSCRIPTION
WHERE id=@id and IsActive= @isActive
END
GO
我想以这种方式使用它 -
订阅表只有两个IsActive值,即0和1。 什么是最好的短路方式,以便适用于所有这三个条件?提前感谢: - )
答案 0 :(得分:1)
@isActive
可以有三种状态:0,1或NULL
只需在where子句中添加NULL的内容:
CREATE PROCEDURE [GetSubscriptions]
@id uniqueidentifier,
@isActive bit
AS
BEGIN
SELECT
*
FROM SUBSCRIPTION
WHERE id=@id and (IsActive= @isActive or @isActive is NULL)
END
GO
or
的双方可能永远不会同时为真,因为使用NULL
与=
进行比较始终为假。如果@isActive
为NULL,则or
为True,无论isActive
中Subscription
列的值如何。