以下查询有什么问题?

时间:2013-04-02 13:23:17

标签: stored-procedures if-statement sql-server-2008-r2

我正在尝试使用存储过程基于某些字符串,即nvarchar参数从数据库中获取数据。

我正在尝试以下查询:

IF (@Ticket_Status IS NOT NULL AND @Ticket_Status = 'Open')
    Begin
         Select * From Tickets
         Where Ticket_Status = 'Open'
    End
else
    Begin
         Select * From Tickets
         Where Ticket_Status = 'Closed'
    End 

但它没有给我任何结果。

如果我尝试简单查询,请执行以下操作:

Select * From Tickets
Where Ticket_Status = 'Open'
它给了我适当的结果。我做错了什么?这是在SQL存储过程中使用If Else的正确方法吗?

1 个答案:

答案 0 :(得分:0)

不确定为什么需要两个查询副本和一个大的IF条件。此外,没有理由检查NOT NULL 是否等于某事。如果后者是真的,前者也必须是真的。

Select <cols> 
From dbo.Tickets
Where Ticket_Status = COALESCE(@Ticket_Status, N'Closed');