需要关联2个db的2张表,批量update,怎样才能知道哪些被更新??哪些没有被更新呢?try{ update loop},rollback.假如需要更新1000条记录,怎么样知道更已经新到哪条记录??

解决方案 »

  1.   

    两表数据关联的UPDATE表tb1及数据如下:
            ID          A          B
    ---------- ---------- ----------
             1         10         20
             2          1          2
             3          3          2表tb2及数据如下:
            ID          A          B
    ---------- ---------- ----------
             1         10         20
             2         10         20根据表tb2的id更新表tb1对应的a,b的值。update tb1 set (a,b) = (select a,b from tb2 where id = tb1.id) where id in (select distinct id from tb2)        ID          A          B
    ---------- ---------- ----------
             1         10         20
             2         10         20
             3          3          2
    ---------------------------------------------------------------------------------------------------------
    表tb2及数据如下:
            ID          A          B
    ---------- ---------- ----------
             1         10         20
             2         10         20
             3          3          2
             1         20         40
             2         20         40根据ID分组求A,B的和,然后更新表tb1update tb1 set (a,b) = (select sum(a),sum(b) from tb2 where id = tb1.id) where id in (select distinct id from tb2)        ID          A          B
    ---------- ---------- ----------
             1         30         60
             2         30         60
      

  2.   

    只有1个sql更新的时候是不知道的。
    自己查看sql条件里面那个会出错。
    try catch捕捉错误信息。查sql
      

  3.   

    每更新一条语句的时候,commit;
    然后将成功的信息写到另外的表
      

  4.   

    “一个批量更新的循环”
    你的意思是:一句update更新多行,你又在update外面套一个循环
    抑或是其它含义?“更新到第500条还是第600条”
    你的意思是,想知道你提交了一句update后,oracle找到一行符合条件的record,然后更新该行,
    一行一行地更新,更新到第几行,出错了?
    在SQL中,是不关心先后顺序的。所以,我想问一下,为什么要关心更新到“第xxx行”?
    你是想知道为什么update失败吗?那就用catch看类似ora-00000错误信息。
    你用的是什么编程语言?