我描述一下问题:我DEBUG跟踪程序运行,然后一切都正常
当执行到某一个数据库操作的时候  程序就进行部下去了 点什么都没反映 
就卡那不动了 
也没有异常 程序也没有真正的停止  就是停那不动了这是为什么?????merge into t_uri_statistics t 
using 
(select count(*) c from t_uri_statistics where uri=? and time = to_date(substr(?,1,7),'yyyy-MM') and platid=? and mnc=?) s 
on (s.c<>0) 
when matched then 
update set t.cnt = t.cnt+1 where uri=? and time = to_date(substr(?,1,7),'yyyy-MM') and platid=? and mnc=? 
when not matched then 
insert values(seq_user_statistics_id.nextval,?,?,to_date(substr(?,1,7),'yyyy-MM'),?,?)偶尔能执行成功 但就2次  然后就出现这个问题了  数据库里还没有数据 请高人指点SQL操作也就是普通的一句 所以就不贴了  为什么会出现这种情况呢??

解决方案 »

  1.   

    看看你得SQL语句是不是产生锁等待,或者死锁。单步跟踪产生所的话,看看那个表有没有触发器,触发器是不是有可能产生锁。
    我想应该是锁的问题,或者说你这个SQL语句执行时间太长太长
      

  2.   


    不会执行很长啊,就 普通的MERGE语句嘛SQL产生锁 是什么意思  没接触过 不知道 麻烦讲解一下
      

  3.   

    你把这个语句拿到pl/sql developer下执行看看,同时把执行计划拉出来看看
      

  4.   


    这句话 添上值在PLSQL下 可以运行  要不说苦恼呢
      

  5.   

    你的程序是不是没有显式commit
      

  6.   

    是的其他的都COMMIT 就到这就停了然后今天莫名其妙的 能走了   不知道原因在哪里 
      

  7.   

    最好每条语句后面就加上commit防止因为未提交,而发生死锁或者阻塞