2009-12-28 57 views
22

如何在T-SQL中使用多個參數編寫IF語句?多參數IF語句 - T-SQL

電流源錯誤:

DECLARE @StartDate AS DATETIME 
DECLARE @EndDate AS DATETIME 

SET @StartDate = NULL 
SET @EndDate = NULL 

IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL) 
    BEGIN 
     -- do some work 
    END 

它引發以下錯誤:

Incorrect syntax near the keyword 'AND'. Incorrect syntax near the keyword 'AND'. Incorrect syntax near ')'.

+1

在我的機器上工作?我在想你的'BEGIN'和'END'之間可能有錯誤。或者,如果您在「BEGIN」和「END」之間沒有任何內容,那就是問題所在。 – Aaronaught 2009-12-28 20:06:21

+0

感謝您的意見。這是造成該問題的「 - 某些工作」部分。我正在構建一個動態SQL語句...呃! – 2009-12-28 20:12:32

回答

38

你正在做的是正確的。空代碼塊是什麼原因造成的您的問題。這不是條件結構:)

DECLARE @StartDate AS DATETIME 

DECLARE @EndDate AS DATETIME 

SET @StartDate = NULL 
SET @EndDate = NULL 

IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL) 
    BEGIN 
     print 'yoyoyo' 
    END 

IF (@StartDate IS NULL AND @EndDate IS NULL AND 1=1 AND 2=2) 
    BEGIN 
     print 'Oh hey there' 
    END 
1

這是創建複雜的布爾表達式的方法:用AND和OR組合它們。您發佈的代碼段不會爲IF發出任何錯誤。

1

似乎工作正常。

如果你有一個空的BEGIN ... END塊,你可能會看到

Msg 102, Level 15, State 1, Line 10 Incorrect syntax near 'END'.

1

不知道是什麼問題,這似乎工作得很好?

DECLARE @StartDate AS DATETIME 
DECLARE @EndDate AS DATETIME 

SET @StartDate = NULL 
SET @EndDate = NULL 

IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL) 
    BEGIN 
     Select 'This works just fine' as Msg 
    END 
Else 
    BEGIN 
    Select 'No Lol' as Msg 
    END 
1

您的代碼有效(有一個例外)。它需要在BEGIN和END之間有代碼。

更換

--do some work 

print '' 

我想,也許你看到「結束而不是‘與’