提间:merge into  的效率真的是很高吗?我的40成条记录更新怎么这么慢呢?当然我的字段25个多点。 
但是老感觉也不能慢到这个程序吧 
解决,看如下例子 
CREATE OR REPLACE PROCEDURE PR_SB_MIDDLE_MDM IS 
BEGIN 
MERGE INTO MDM_PSN M 
  USING SB_PSN S ON(M.SB_PSN_ID=S.AAC001) 
  WHEN MATCHED THEN 
      UPDATE SET M.SB01=s.aac001,M.SB02=s.aac003,M.SB04=s.aac004,M.SB05=s.aac006,M.SB06=s.aac002, 
                  M.SB08=s.aab001,M.SB10=s.aac008,M.SB11=s.aac017,M.SB12=s.aac005,M.SB13=s.aac009, 
                  M.SB14=s.aac023,M.SB15=s.cac008,M.SB16=s.aac018,M.SB17=s.aac019,M.SB18=s.aac011, 
                  M.SB19=s.aac007,M.SB20=s.cac009,M.SB21=s.aac020,M.SB22=s.aab001,M.SB23=s.akc020, 
                  M.SB24=s.aae007,M.SB25=s.aae005,M.SB26=s.aac016,M.SB27=s.aac014,M.SB28=s.aac015 
  WHEN NOT MATCHED THEN 
      INSERT (M.SB01,M.SB02,M.SB04,M.SB05,M.SB06,M.SB08,M.SB10,M.SB11,M.SB12,M.SB13, 
                          M.SB14,M.SB15,M.SB16,M.SB17,M.SB18,M.SB19,M.SB20,M.SB21,M.SB22,M.SB23, 
                          M.SB24,M.SB25,M.SB26,M.SB27,M.SB28) 
                  VALUES(S.aac001,S.aac003,S.aac004,S.aac006,S.aac002,S.aab001,S.aac008,S.aac017, 
                          S.aac005,S.aac009,S.aac023,S.cac008,S.aac018,S.aac019,S.aac011,S.aac007, 
                          S.cac009,S.aac020,S.aab001,S.akc020,S.aae007,S.aae005,S.aac016,S.aac014, 
                          S.aac015); 
COMMIT; 
END PR_SB_MIDDLE_MDM; 
应该怎样让他提高效率啊 有人说用游标可以把using sb_psn 这个地方放到游标里边,游标每次循环meger一次,可是游标我不会写
大哥们帮帮忙,能给我改成游标的方式吗?

解决方案 »

  1.   

    -- 定义游标 
    declare 
       cursor aa is 
          select names,num from test; 
    begin 
       for bb in aa 
       loop 
            if bb.names = "ORACLE" then 
             
            end if 
       end loop; 
        
    end 
      

  2.   

    oracle游标使用大全:http://dev.csdn.net/article/73/73358.shtm
      

  3.   

    http://dev.csdn.net/article/73/73358.shtm
      

  4.   

    oracle游标分类总结大全:http://hi.baidu.com/liuzhq/blog/item/3bcdd2037b471e8fd43f7c5f.html
      

  5.   

    上边的bb 是什么啊
    bb.names="ORACLE" then 这个bb.names 代表的是什么,能说明白 点不高手