Stored procedures 下面的查询有什么问题?
我正在尝试使用存储过程根据一些字符串(即nvarchar参数)从数据库中获取数据 我正在尝试以下查询: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
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
语句以查看到达哪个分支?