本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          隨筆-230  評論-230  文章-8  trackbacks-0

          Oracle9i引入了一個新的SQL語句,使用本語句可以在一條語句中連接兩個表。
          以前要使用UPDATE去更新兩個表中都存在的記錄,或者用INSERT添加兩個合并表中不存在的記錄,必須寫兩個SQL語句,
          而現(xiàn)在這兩種操作都只要一條SQL MERGE語句就可以實(shí)現(xiàn)。

           

          create table inventory (part_nointeger integer,part_count integer); 

          insert into inventory values(1,5);

          insert into inventory values(3,6); 


          create table shipment (part_nointeger integer,part_count integer);

          insert into shipment values(1,2);
          insert into shipment values(2,2);

          MERGE 
          INTO inventory
              USING shipment
              
          ON (inventory.part_nointeger=shipment.part_nointeger)
          WHEN MATCHED THEN
             
          UPDATE SET inventory.part_count=inventory.part_count+shipment.part_count  --注意如果這里前面的part_count字段不指明表名,默認(rèn)為shipment字段,結(jié)果會為4
          WHEN NOT MATCHED THEN
             
          INSERT VALUES (shipment.part_nointeger,shipment.part_count);

          commit;
          select * from inventory;
             
          truncate table inventory;     
          /*
            PART_NO   PART_COUNT
          ----------              ----------
                1                      7
                3                      6
                2                      2 

           

          執(zhí)行的結(jié)果是shipment數(shù)據(jù)已經(jīng)被合并到inventory中,所以與inventory中某些東西相匹配的shipment都會被添加到count中,
          而沒有得到的匹配的就不會添加到inventory中。

           

          在MERGE語句中必須指定一個WHEN MATCHED和一個WHEN NOT MATHCED語句。
          如果除這兩種情況之外還有別的情況,你可能就需要使用一個常規(guī)的INSERT或者UPDATE語句。

           

          另外一點(diǎn)是MERGE語句一次只能修改一行記錄,而且不能修改在ON子句中引用的列。

           

          MERGE語句的目標(biāo)表(target table)(在本例中是inventory)必須是一個可以使用INSERT語句進(jìn)行插入或者UPDATE語句進(jìn)行更新的表或者視圖。
          源表(source table)(在本例中是shipment)可以是任何的查詢表,比如說外部表或者管道化表函數(shù)。

          posted on 2008-06-12 10:59 有貓相伴的日子 閱讀(1668) 評論(0)  編輯  收藏 所屬分類: pl/sql
          本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          主站蜘蛛池模板: 阿瓦提县| 娱乐| 长葛市| 马尔康县| 平昌县| 平潭县| 乌鲁木齐市| 左权县| 遂宁市| 辽宁省| 林州市| 恩平市| 邮箱| 文安县| 庆安县| 瓦房店市| 平果县| 弥勒县| 定日县| 潮安县| 大足县| 广南县| 南雄市| 宁海县| 芮城县| 昌都县| 石屏县| 荥阳市| 三河市| 陇南市| 万安县| 玉门市| 阳春市| 阜新市| 剑河县| 呼图壁县| 肇东市| 江口县| 通河县| 来凤县| 香格里拉县|