2012-01-27 7 views
1

Мне нужен запрос для обновления одного поля. Если передаваемый параметр является недействительным Не обновлять его с нулевым значением параметраобновить условно поле в случае, если параметр не равен нулю

update myTable 
set myField1 = :param1 

среды: спящий режим и оракул

ответ

5

Разве вы не можете просто положить его туда, где положение?

update myTable 
    set myField1 = :param1 
where :param1 is not null 

Это позволит избежать дополнительных DML. В качестве альтернативы вы можете сделать:

update myTable 
    set myField1 = decode(:param1, null, myField1, :param) 

Но это означает, что вы будете обновлять поле к тому же, что не совсем оптимальным, если вам не придется.

+0

Я думаю, что функция декодирования - это то, что мне нужно спасибо – geo

+1

@geo - рекомендую первую версию. Кроме того: param1 и: param должны быть одинаковыми параметрами ... – MatBailie

+0

@Dems, хорошо пойман! Я обновил его. Я предположил по выбору geo, что обновляется больше столбцов, что будет означать, что второй запрос был правильным ... – Ben

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