Vilket sätt är korrekt då Selecten inte säkert retunerar något.
DECLARE @total int;
SET @total = (SELECT t.Amount FROM Table1 t WHERE t.Id = @id)
Alt 1.
IF(@total > 0)
...
Alt 2.
IF(@total > NULL)
...
Alt 3.
IF(@total IS NOT NULL)
...
Ok, ändrar helt för att göra det tydligare. Selecten retunerar bara en post. Använder Alt 1 just nu och det verkar fungera, men är det rätt.
DECLARE @id int, @total int;
SELECT @id = t.Id, @total = t.Amount
FROM Table2 t
WHERE t.Table1Id = @table1id AND t.Key = @key;
[B]Alt 1.[/B]
IF(@id > 0)
BEGIN
UPDATE Table2 SET Amount = Amount + @total WHERE Id = @id;
END
ELSE
BEGIN
INSERT INTO Table2(Amount) VALUES(@total);
END
[B]Alt 2.[/B]
IF(@total > NULL)
BEGIN
UPDATE Table2 SET Amount = Amount + @total WHERE Id = @id;
END
ELSE
BEGIN
INSERT INTO Table2(Amount) VALUES(@total);
END
[B]Alt 3.[/B]
IF(@total IS NOT NULL)
BEGIN
UPDATE Table2 SET Amount = Amount + @total WHERE Id = @id;
END
ELSE
BEGIN
INSERT INTO Table2(Amount) VALUES(@total);
END