2015-08-22 20 views
1

我編寫了一個存儲過程從我的應用程序的表中獲取數據。現在我需要使用另一個條件查詢相同的列。我用IF ELSE解決這個問題我目前的存儲過程是這樣的如何以更好的方式執行不同的條件

ALTER PROCEDURE [dbo].[sample] 
     @flag INT=1 
AS 
BEGIN 
    SET NOCOUNT ON; 

    IF(@flag = 1) 
    BEGIN 
     SELECT 
      item1, item2, item3 
     FROM 
      table1 
     WHERE 
      (my first condition) 
    END 
    ELSE 
    BEGIN 
     SELECT 
      item1, item2, item3 
     FROM 
      table1 
     WHERE 
      (my second condition) 
    END 
END 

當前的存儲過程工作正常,但其髒,如果我有需要另一列或者我需要刪除一列,我必須這樣做那兩次。

有沒有什麼辦法來優化這個存儲過程?我是SQL新手,這是我的第一個存儲過程。請幫助

回答

2

可以是這樣的:

SELECT item1,item2,item3 
FROM table1 
WHERE 
    (@flag = 1 and 'my first condition') OR 
    (@flag != 1 and 'my secondcondition') 
0

您可以使用CASE爲

SELECT item1, item2, item3 
FROM table1 
WHERE 
    CASE 
     WHEN @flag = 1 AND 'my first condition' THEN 1 
     WHEN @flag != 1 AND 'my second condition' THEN 1 
    END = 1 
相關問題