Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как не добавлять новые записи при merge + delete ?  [new]
Alibek B.
Member

Откуда:
Сообщений: 3722
merge into BM_CUSTOMER_CONTACT CC
using (select 999 as CONTACT_DICT_ID, nvl2(:reason, '['||to_char(sysdate, 'YYYY-MM-DD @ HH24:MI')||'] '||:reason,'***') as VALUE from DUAL) RS
on (CC.CUSTOMER_ID = 99092 and CC.CONTACT_DICT_ID = RS.CONTACT_DICT_ID)
when matched then
  update set CC.VALUE = RS.VALUE
  delete where CC.VALUE = '***'
when not matched then
  insert (CC.CUSTOMER_ID, CC.CONTACT_DICT_ID, CC.VALUE)
  values (99092,        RS.CONTACT_DICT_ID, RS.VALUE)


Можно ли сделать так, чтобы часть when not matched выполнялась только в случае, если параметр задан?


P.S. Можно закрыть.
merge into BM_CUSTOMER_CONTACT CC
using (select 999 as CONTACT_DICT_ID, nvl2(:reason, '['||to_char(sysdate, 'YYYY-MM-DD @ HH24:MI')||'] '||:reason,'***') as VALUE from DUAL) RS
on (CC.CUSTOMER_ID = 99092 and CC.CONTACT_DICT_ID = RS.CONTACT_DICT_ID)
when matched then
  update set CC.VALUE = RS.VALUE
  delete where CC.VALUE = '***'
when not matched then
  insert (CC.CUSTOMER_ID, CC.CONTACT_DICT_ID, CC.VALUE)
  values (99092,        RS.CONTACT_DICT_ID, RS.VALUE)
  where :reason is not null


Сообщение было отредактировано: 26 ноя 19, 14:52
26 ноя 19, 14:45    [22025702]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить