Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как не добавлять новые записи при merge + delete ? / 1 сообщений из 1, страница 1 из 1
26.11.2019, 14:45
    #39894512
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не добавлять новые записи при merge + delete ?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
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. Можно закрыть.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как не добавлять новые записи при merge + delete ? / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]