国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

使用Oracle 10g MERGE語句更新數據行

瀏覽:112日期:2023-11-29 19:17:12

在Oracle 9i R2版中引入的MERGE語句通常被稱作“更新插入”(upsert),因為使用MERGE可以在同一個步驟中更新(update)并插入(insert)數據行,對于抽取、轉換和載入類型的應用軟件可以節省大量寶貴的時間,比如向數據倉庫中加載數據,數據倉庫中沒有的數據行可以插入到數據倉庫中,而已經存在的數據行也同時被更新。

在MERGE語句引入的時候,需要同時使用一條UPDATE和一條INSERT語句,順序也是固定的(先使用UPDATE語句,然后是INSERT語句)。如果您只需要使用其中的某一條一句,您只需要使用現有的INSERT或者UPDATE語句,而不必使用MERGE語句,而刪除數據可以使用DELETE語句。

在Oracle 10g R1版中,MERGE語句發生了變化,UPDATE或INSERT語句不再是必須的,而是可選項,您可以兩者都用也可以都不用,而且,UPDATE語句也具備了DELETE的功能,您可以在同一個步驟中對現有的有效記錄進行升級并清理廢棄的記錄。

列表A創建了一個表格列出現有項目:項目號碼、標題、開始日期、進度完成比例以及員工對項目的響應,還創建了一個事務表格使用MERGE語句進行升級批處理。

列表A

DROP TABLE open_projects; DROP TABLE project_updates; CREATE TABLE open_projects (pno NUMBER(6) PRIMARY KEY, title VARCHAR2(40), startdate DATE, pctdone NUMBER(3), empno NUMBER(6) ); INSERT INTO open_projects VALUES (10, 'Inventory servers', '08-JAN-07',0, 206); INSERT INTO open_projects VALUES (20, 'Upgrade Oracle on SRV01','15-JAN-07', 0, 206); INSERT INTO open_projects VALUES (30, 'Conduct skills assessment','22-JAN-07', 0, 210); CREATE TABLE project_updates (action CHAR(1), pno NUMBER(6), pctdone NUMBER(3), empno NUMBER(6) ); INSERT INTO project_updates VALUES ('C', 10, 50, 214); INSERT INTO project_updates VALUES ('D', 20, NULL, NULL); COMMIT;

一個典型的MERGE語句從識別表格開始執行升級,而且對現有的記錄進行篩選測試:

MERGE INTO open_projects op USING project_updatespu ON (op.pno = pu.pno) ...

表格open_projects會接受更新的數據,而project_updates表格則不會改變,如果項目號碼(pno)在兩個表格中都一樣,那么數據行則被認為是相同的。

MERGE語句剩下的部分是更新語句,以及DELETE WHERE語法。

... WHEN MATCHED THEN UPDATE SET pctdone = pu.pctdone, empno = pu.empno DELETE WHERE pu.action = 'D';

列表B展示了MERGE語句運行前后的表格情況。

列表B

SQL> @mergedel_b PNO TITLE STARTDATE PCTDONE EMPNO ---------- ---------------------------------------- 10 Inventory servers 08-JAN-07 0 206 20 Upgrade Oracle on SRV01 15-JAN-07 0 206 30 Conduct skills assessment 22-JAN-07 0 210 A PNO PCTDONE EMPNO - ---------- ---------- ---------- C 10 50 214 D 20 2 rows merged. PNO TITLE STARTDATE PCTDONE EMPNO ---------- ---------------------------------------- 10 Inventory servers 08-JAN-07 50 214 30 Conduct skills assessment 22-JAN-07 0 210 A PNO PCTDONE EMPNO - ---------- ---------- ---------- C 10 50 214 D 20 SQL> spool off

第一個事務對第10號項目進行了改變(操作‘c’),項目完成比例從0變成了50,項目員工人數變成了214人;第二個事務產出了第20號項目,“隨后”的列表展示了刪除后的狀態,而project_updates表格沒有發生改變。這個例子展示了這些語句并不是必須的,而且在MERGE語句中也并不需要使用INSERT語句。

標簽: Oracle 數據庫
相關文章:
主站蜘蛛池模板: 青青爽国产手机在线观看免费 | 欧美在线观看不卡 | 丁香伊人五月综合激激激 | 亚洲国产精品久久 | 俄罗斯三级毛片 | 成人久久精品一区二区三区 | 国产成人免费视频 | 免费欧洲毛片a级视频无风险 | 亚洲精品一区二三区在线观看 | 国产精品亚洲精品日韩已方 | 欧洲乱码伦视频免费 | 性xxx69xxx视频在线观看 | 国产一区二区三区视频在线观看 | 欧美一级xxx| 国产自愉自愉全免费高清 | 欧美激情综合亚洲五月蜜桃 | 日韩在线手机看片免费看 | 5388国产亚洲欧美在线观看 | 国产一区二区三区在线免费 | 国产日韩欧美在线一二三四 | 亚洲品质自拍视频 | 久久免费在线观看 | 看中国一级毛片 | 国产高清精品久久久久久久 | 欧美中文字幕一区二区三区 | 天天se天天cao综合网蜜芽 | 亚洲精品亚洲人成人网 | 国产va免费精品高清在线观看 | 露脸国产野战最新在线视频 | 国产精品成人免费视频不卡 | 亚洲欧美日产综合在线看 | 久久草在线视频免费 | 欧洲做人爱c欧美 | 911精品国产91久久久久 | 久草新免费 | 国产成人免费在线观看 | 亚洲欧美精品国产一区色综合 | 国产在线观看91精品一区 | 日本三级香港三级乳网址 | 亚洲一区二区三区一品精 | 国产在线欧美日韩一区二区 |