вставьте строку в таблицу, если она не существует - Oracle - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу использовать оператор слияния либо для обновления строки, если она существует, либо для вставки новой строки в таблицу, если она не существует. Может ли это быть сделано с помощью MERGE

MERGE into BANK_DETAILS A using ( SELECT * FROM BANK_DETAILS ) B ON (A.BANKID=<<>> AND A.COUNTRY=<<>>) 
WHEN MATCHED THEN 
UPDATE SET A.STATUS=<<condiition>>, A.IS_BLOCKED=<<>> , A.IS_DISABLED=<<>>,A.LOGO=<<>>,a.BANK_GROUP=<<>>,A.LAST_MODIFIED_DATE=<<>>,A.LAST_MODIFIED_BY=<<>>
WHEN NOT MATCHED THEN
INSERT (A.ID,A.BANKID,A.COUNTRY,A.BANKNAME,A.LOGO,A.STATUS,A.IS_BLOCKED,A.IS_DISABLED,A.BANK_GROUP,A.CREATED_DATE,A.CREATED_BY,A.LAST_MODIFIED_DATE,A.LAST_MODIFIED_BY) 
VALUES (BANK_DETAILS_ID_SEQ.NEXTVAL,?,?,?,?,?,?,?,?,sysdate,?,sysdate,?)
;

1 Ответ

0 голосов
/ 22 апреля 2019

Да, просто выберите значения из dual в предложении USING вместо bank_details

MERGE INTO bank_details a USING ( SELECT 2345 as bankid,
                                         'India' as country, 
                                          'SBI' as bankname,
                                           ..
                                           ..
                                           ...
                                      FROM dual ) b ON ( .. )
  ..
  ..
  UPDATE SET A.status= b.status, a.is_blocked = b.is_blocked,..
  ...
  ...
 VALUES
   ( bank_details_id_seq.NEXTVAL,b.bankid,b.country,?,?,?,?,?,?,
      SYSDATE,?,SYSDATE,? );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...