2013-04-02 34 views
0

我想從基於某些字符串的數據庫中提取數據,即使用存儲過程的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的正確方法嗎?

+0

然後您需要提供更多信息。什麼是列的數據類型?什麼是參數的數據類型?你究竟如何稱呼它? 「沒有結果」意味着沒有查詢被返回,或者查詢被返回,但它是空的?您是否嘗試在每個IF中添加'PRINT'語句來查看哪個分支到達? –

回答

0

不知道爲什麼你需要兩個查詢副本和一個大的IF條件。也沒有理由檢查它是否是NOT NULL等於某事。如果後者是真的,前者也必須是真的。

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

好吧我知道我不需要檢查NOT NULL,但是如果條件仍然有問題。 –

+0

實際上,我需要使用If條件編寫更復雜的查詢,這就是爲什麼我試圖用簡單的查詢來更好地理解它。 –