Я хочу обновить некоторые данные в указанном случае, иначе эти столбцы не будут обновляться.условие if-else для обновления таблицы в хранимой процедуре в SQL Server 2005
Что я могу написать в хранимой процедуре для этого?
Я хочу обновить некоторые данные в указанном случае, иначе эти столбцы не будут обновляться.условие if-else для обновления таблицы в хранимой процедуре в SQL Server 2005
Что я могу написать в хранимой процедуре для этого?
Просто пример:
IF @a <= 0
BEGIN
UPDATE table SET counter = @a, name = 'Minati'
END
ELSE
BEGIN
UPDATE table SET name = 'Minati'
END
Вы можете использовать case
для управления присвоить ли новое значение или сохранить старое значение.
update <sometable>
set field = case when <condition> then <newvalue> else field end
where <condition>
Пример:
update questions
set reply = case when @input is not null then @input else reply end
where answer = 42
ISNULL (@ input, field)? – devio
@devio: Да, для конкретного случая, когда условие является проверкой для null, функция isnull может использоваться вместо случая, но я хотел показать случай, поскольку он может использоваться для любого условия. :) – Guffa
@ Guffa: +1 для этого тоже мое предпочтительное решение. Возможно, вы должны отредактировать свой ответ и изменить «@input is not null» на «
Может быть, вы можете построить условие в команде обновления и легко запустить более одного обновления с условиями Diferent. Это может быть не самый элегантный способ, но он хорош. Это зависит от ваших потребностей.
UPDATE table SET field=value WHERE <<condition>>
UPDATE table SET field=value2 WHERE <<condition2>>
Use Case в разделе Обновление
как
SQL Заявление # 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
Взятые из SQL SERVER UPDATE
Также вы можете пойти с if..else заявление
Если бы вы были в SQL SERVER 2008, вы могли бы воспользоваться ароматом заявления MERGE
Помогите нам помочь вам, предоставив более подробную информацию, как пример. –