Stored procedures 下面的查询有什么问题?

Stored procedures 下面的查询有什么问题?,stored-procedures,if-statement,sql-server-2008-r2,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

我正在尝试使用存储过程根据一些字符串(即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的正确方法吗?

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

Select <cols> 
From dbo.Tickets
Where Ticket_Status = COALESCE(@Ticket_Status, N'Closed');
选择
来自dbo。门票
其中Ticket_Status=合并(@Ticket_Status,N'Closed');

好的,我知道我不需要检查NOT NULL,但if条件仍然有问题。实际上,我需要使用if条件编写更复杂的查询,这就是为什么我首先尝试使用简单查询来更好地理解它。然后,您需要提供更多信息。列的数据类型是什么?参数的数据类型是什么?你到底怎么称呼它?“无结果”是指不返回任何查询,还是返回了一个查询但该查询为空?您是否尝试在每个
IF
中添加
PRINT
语句以查看到达哪个分支?