Oracle存儲過程merge into


最近本人在做一個后台新增數據功能時,用到了merge into函數,這里把碰到的一些自己理解進行一下總結,有什么不好的,不對的希望大家可以提出來。

merge into的形式:

MERGE INTO 表A USING 表B ON(a.a=b.b)
WHEN MATCHED THEN
更新數據
WHEN NOT MATCHED THEN
新增數據

該SQL語句功能是:

判斷B表和A表是否滿足ON中條件,如果滿足則用B表去更新A表,如果不滿足,則將B表數據插入A表但是有很多可選項,如下:

1.只update或者只insert

2.帶條件的update或帶條件的insert

3.全插入insert實現

4.帶delete的update

接下來我們進行測試一下:

1、首先新建3張表,A、B、C

create table A
(
id NUMBER not null,
name NVARCHAR2(200) not null,
year NUMBER
);
create table B
(
id NUMBER not null,
aid NUMBER not null,
name NVARCHAR2(200) not null,
year NUMBER,
city NVARCHAR2(200)
);
create table C
(
id NUMBER not null,
name NVARCHAR2(200) not null,
city NVARCHAR2(200) not null
);
commit;

2、我們往表中導入數據:

insert into A values(1, 'yangmi', 25);
insert into A values(2, 'huge', 25);
insert into A values(3, 'hejiong',  25);
commit;

insert into B values(1, 2, 'arvin', 26, '廣東');
insert into B values(2, 4, 'tyler', 26, '廣西');
insert into B values(3, 3, 'alan', 40, '湖南');
commit;

3、然后我們使用merge into來更新數據

MERGE INTO A USING (select AID, NAME, YEAR from B) C ON (id = C.AID)
WHEN MATCHED THEN
UPDATE SET YEAR = C.YEAR
WHEN NOT MATCHED THEN
INSERT(ID, NAME, YEAR) VALUES(C.AID, C.NAME, C.YEAR);
commit;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM