SQL-оператор If работает неправильно - PullRequest
1 голос
/ 30 марта 2011

Мое утверждение if, кажется, никогда ничего не делает. Я ввожу @active со страницы ASP, а @cactive задается выбором CActive из таблицы кроваток. Ребята, вы видите что-то не так с этим утверждением? Почему это никогда не выполняется? Я использую SQL Server 2005

//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')

Ответы [ 2 ]

3 голосов
/ 30 марта 2011

Если любой из них равен нулю, они никогда не будут равны или не равны

If @cactive != @active

Пример

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

IF @i = @i2
PRINT 'equal'

Проверьте на NULLS также с помощью ISNULL()/COALESCE() или IS NULL/IS NOT NULL

1 голос
/ 30 марта 2011

Использование IS NULL лучше всего подходит для проверки условия, как в предложении WHERE.

Вы должны использовать функцию ISNULL () ...

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