/ / if-else warunek aktualizacji tabeli w procedurze przechowywanej w SQL Server 2005 - sql, sql-server, stored-procedures, sql-server-2005

Warunek if-else do aktualizacji tabeli w procedurze przechowywanej w SQL Server 2005 - sql, sql-server, stored-procedures, sql-server-2005

Chcę zaktualizować niektóre dane w określonym przypadku, w przeciwnym razie te kolumny nie będą aktualizowane.

Co mogę napisać kod w procedurze przechowywanej do tego?

Odpowiedzi:

9 dla odpowiedzi № 1

Możesz użyć a case kontrolować, czy przypisujesz nową wartość, czy zachowujesz starą wartość.

update <sometable>
set field = case when <condition> then <newvalue> else field end
where <condition>

Przykład:

update questions
set reply = case when @input is not null then @input else reply end
where answer = 42

6 dla odpowiedzi nr 2

Użyj instrukcji Case w klauzuli Update

lubić

Instrukcja SQL nr 6

UPDATE titles
SET price =
CASE
WHEN (price < 5.0 AND ytd_sales > 999.99)
THEN price * 1.25
WHEN (price < 5.0 AND ytd_sales < 1000.00)
THEN price * 1.15
WHEN (price > 4.99 AND ytd_sales > 999.99)
THEN price * 1.2
ELSE price
END

Pochodzą z Aktualizacja SQL SERVER

Możesz również użyć instrukcji if ... else

Gdybyś był w SQL SERVER 2008, mógłbyś skorzystać z zalet komunikatu MERGE


3 dla odpowiedzi nr 3

Tylko przykład:

IF @a <= 0
BEGIN
UPDATE table SET counter = @a, name = "Minati"
END
ELSE
BEGIN
UPDATE table SET name = "Minati"
END

3 dla odpowiedzi № 4

Może być możliwe zbudowanie warunku w aktualizacjipolecenie i łatwo uruchomić więcej niż jedną aktualizację w różnych warunkach. Może nie jest to najbardziej elegancki sposób, ale jest skuteczny. To zależy od twoich potrzeb.

UPDATE table SET field=value WHERE <<condition>>
UPDATE table SET field=value2 WHERE <<condition2>>