午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

使用Oracle 10g MERGE語(yǔ)句更新數(shù)據(jù)行

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

在Oracle 9i R2版中引入的MERGE語(yǔ)句通常被稱作“更新插入”(upsert),因?yàn)槭褂肕ERGE可以在同一個(gè)步驟中更新(update)并插入(insert)數(shù)據(jù)行,對(duì)于抽取、轉(zhuǎn)換和載入類型的應(yīng)用軟件可以節(jié)省大量寶貴的時(shí)間,比如向數(shù)據(jù)倉(cāng)庫(kù)中加載數(shù)據(jù),數(shù)據(jù)倉(cāng)庫(kù)中沒有的數(shù)據(jù)行可以插入到數(shù)據(jù)倉(cāng)庫(kù)中,而已經(jīng)存在的數(shù)據(jù)行也同時(shí)被更新。

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

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

列表A創(chuàng)建了一個(gè)表格列出現(xiàn)有項(xiàng)目:項(xiàng)目號(hào)碼、標(biāo)題、開始日期、進(jìn)度完成比例以及員工對(duì)項(xiàng)目的響應(yīng),還創(chuàng)建了一個(gè)事務(wù)表格使用MERGE語(yǔ)句進(jìn)行升級(jí)批處理。

列表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;

一個(gè)典型的MERGE語(yǔ)句從識(shí)別表格開始執(zhí)行升級(jí),而且對(duì)現(xiàn)有的記錄進(jìn)行篩選測(cè)試:

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

表格open_projects會(huì)接受更新的數(shù)據(jù),而project_updates表格則不會(huì)改變,如果項(xiàng)目號(hào)碼(pno)在兩個(gè)表格中都一樣,那么數(shù)據(jù)行則被認(rèn)為是相同的。

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

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

列表B展示了MERGE語(yǔ)句運(yùn)行前后的表格情況。

列表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

第一個(gè)事務(wù)對(duì)第10號(hào)項(xiàng)目進(jìn)行了改變(操作‘c’),項(xiàng)目完成比例從0變成了50,項(xiàng)目員工人數(shù)變成了214人;第二個(gè)事務(wù)產(chǎn)出了第20號(hào)項(xiàng)目,“隨后”的列表展示了刪除后的狀態(tài),而project_updates表格沒有發(fā)生改變。這個(gè)例子展示了這些語(yǔ)句并不是必須的,而且在MERGE語(yǔ)句中也并不需要使用INSERT語(yǔ)句。

相關(guān)文章:
主站蜘蛛池模板: 久久婷婷丁香 | 国产一级在线视频 | av亚洲在线 | 五月婷婷六月综合 | 亚洲s色| 四虎新网址 | 99热在线观看免费 | 午夜免费观看视频 | 黄页av| 久久免费在线 | 日韩国产中文字幕 | 91精品综合久久久 | 国产精品美女久久久久av爽 | 国产精品探花视频 | 免费在线a | 午夜免费播放观看在线视频 | 嫩操影院 | 观看av免费| 国产成人97精品免费看片 | 婷婷六月色 | 99riav在线| 欧美成人午夜精品免费 | 91网页在线观看 | 久久午夜夜伦鲁鲁片 | 成人欧美一区二区三区在线观看 | 日韩欧美福利 | 国产又黄又爽又无遮挡 | 日韩欧美国产高清 | www日韩精品 | 一区二区视频在线观看 | 久草这里只有精品 | 激情视频在线播放 | 欧美性a视频 | 色中色综合网 | 欧美男人亚洲天堂 | 四虎影视永久免费 | 婷婷狠狠干 | 99免费在线观看 | 久久黄色免费网站 | 污视频网站在线 | 国产精品嫩草影院桃色 |