2011-03-30 73 views
1

我的if语句从来没有做过任何事情。我从ASP页面输入@active,并通过从Cots表格中选择CActive来设置@cactive。你们看到这个说法有什么不对吗?为什么它没有执行?即时通讯使用SQL Server 2005SQL如果语句不能正常工作

//Declare Variables Here (about 20) 

AS 
If @currentdate is null 
SET @currentdate = GETDATE() 

Update Cots 
SET //UPDATE ALL FIELDS HERE 
Where CoID = @CID 

SET @cactive = 
(
Select CActive 
From Cots 
Where CoID = @CID 
) 

If @cactive != @active 
Begin 
INSERT INTO Activity 
     (CoID,ActivityDate, ActivityName, ActivityNote, ActivityMediaContact, ActivityOwner) 
     Values (@CID, @currentdate, 'Co ' + @fname + ' ' + @lname + 'made inactive','Co made inactive on ' + CAST(@currentdate AS varchar(50)), 'User', 'User') 
End 

INSERT INTO Activity 
     (CoID,ActivityDate, ActivityName, ActivityNote, ActivityMediaContact, ActivityOwner) 
     Values (@CID, @currentdate, 'Updated ' + @fname + ' ' + @lname,'Updated on ' + CAST(@currentdate AS varchar(50)), 'User', 'User') 
+0

什么是数据类型@active和@cactive? – 2011-03-30 16:08:05

+0

@BenHoffstein varchar(5) – atrljoe 2011-03-30 16:25:29

回答

3

如果这些是零,他们将永远不会等于或不等于

If @cactive != @active 

DECLARE @i int, @i2 int 
IF @i <> @i2 
PRINT 'not equal' 

IF @i = @i2 
PRINT 'equal' 

检查空值还可以通过使用ISNULL()/COALESCE()IS NULL/IS NOT NULL

1

使用IS NULL最适合检查条件,就像在WHERE子句中一样。

您应该使用ISNULL()函数...

USE AdventureWorks2008R2; 
GO 
SELECT AVG(ISNULL(Weight, 50)) 
FROM Production.Product; 
GO