Я пытаюсь выполнить операцию upsert, используя оператор MERGE
для таблицы БД Oracle 12 с именем CONFIG
, схема которой выглядит следующим образом:
id | name | value
Если строка с name
'NON_TAXABLE_CODE 'существует, обновите value
до' 400 ', иначе вставьте в него новую строку.
Первая попытка
MERGE into CONFIG dest USING (SELECT id, name, value from CONFIG where name = 'NON_TAXABLE_CODE') src
ON (dest.name = src.name)
WHEN MATCHED THEN
UPDATE SET dest.value = src.value
WHEN NOT MATCHED THEN
INSERT (id, name, value) VALUES (src.id, src.name, src.value )
Это обновит значениеесли строка существует, но не вставляет новую строку (если строки не существует)
SecondTry:
MERGE into CONFIG as dest USING VALUES (0, 'NON_TAXABLE_CODE', '400') as src (id, name, value)
ON dest.name = src.name
WHEN MATCHED THEN
UPDATE SET dest.value = src.value
WHEN NOT MATCHED THEN
INSERT (id, name, value) VALUES (src.id, src.name, src.value )
Error report -
SQL Error: ORA-02012: missing USING keyword
02012. 00000 - "missing USING keyword"
*Cause:
*Action:
ThirdTry:
MERGE into CONFIG as dest USING (select 0 as id, 'VERTEX_PRODTYPE_NON_TAXABLE' as name, '400' as value from DUAL) as src
ON dest.name = src.name
WHEN MATCHED THEN
UPDATE SET dest.value = src.value
WHEN NOT MATCHED THEN
INSERT (id, name, value) VALUES (src.id, src.name, src.value )
Error report -
SQL Error: ORA-02012: missing USING keyword
02012. 00000 - "missing USING keyword"
*Cause:
*Action:
Может кто-нибудь сказать мне, где я здесь не так?Спасибо.