2009-11-04 3 views
2

Я хочу обновить некоторые данные в указанном случае, иначе эти столбцы не будут обновляться.условие if-else для обновления таблицы в хранимой процедуре в SQL Server 2005

Что я могу написать в хранимой процедуре для этого?

+1

Помогите нам помочь вам, предоставив более подробную информацию, как пример. –

ответ

3

Просто пример:

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

Вы можете использовать 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 
+1

ISNULL (@ input, field)? – devio

+0

@devio: Да, для конкретного случая, когда условие является проверкой для null, функция isnull может использоваться вместо случая, но я хотел показать случай, поскольку он может использоваться для любого условия. :) – Guffa

+0

@ Guffa: +1 для этого тоже мое предпочтительное решение. Возможно, вы должны отредактировать свой ответ и изменить «@input is not null» на «», чтобы уточнить, что обновление поля произойдет, если какое-либо условие применимо независимо от @input. –

3

Может быть, вы можете построить условие в команде обновления и легко запустить более одного обновления с условиями Diferent. Это может быть не самый элегантный способ, но он хорош. Это зависит от ваших потребностей.

UPDATE table SET field=value WHERE <<condition>> 
UPDATE table SET field=value2 WHERE <<condition2>> 
6
заявление

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

Смежные вопросы