2009-12-28 52 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 '' 

我想,也许你看到“结束而不是‘与’