程序跑的过程中一切正常,链接的是db2资料库,
rs = stat.getResultSet();
就是当if (rs != null) {
                while (rs.next()) {
执行到这里的时候,整个画面就卡住不动了。
请大家帮忙看看什么情况。控制台无任何异常。
执行的不是sql是存储过程。 stat = conn.prepareCall("CALL " + EServicingHelper.getDBSchema() +
                        "SP_ESERV_GET_CLT_INFO_BY_NAME(?,?,?,?,?,?,?)");

解决方案 »

  1.   

    有可能是你的数据库锁住了,有其它的操作没有commit。
      

  2.   

    额  rs.next()一直为真OK它在这儿陷入死循环了!!
      

  3.   

     问题很可能在你这个存储过程中,
    SP_ESERV_GET_CLT_INFO_BY_NAMEjava端将将执行命令发给数据库服务器后,数据库在执行该存储过程的时候出现了死循环或者其他原因迟迟没有放回数据。原因有二:
    1。数据库的存储过程创建的有问题,建议你在数据库端用SQL 执行以下。
    2。java短程序在给存储过程装载参数时出现数据异常,导致数据库在用传递过来的参数实行SQL的时候出现死循环或是其他原因至迟迟没有返回结果。
      

  4.   

    存儲過程不會有問題(傳遞參數也不會有問題),否則早該報錯
    原因查明:該存儲過程無問題,只是要等大約20-30分鐘左右,這段code才會繼續執行下去,執行完畢。深層原因還是不明。
      

  5.   

    估计锁的问题或者你的存储过程的问题吧,不通过JAVA手工调用存储过程看看,现在也在用DB2,恶心死了,读锁定的,当有人使用update或者insert无提交时,select都会给锁掉...
      

  6.   

    确定只是一句next()就消耗了2,30分钟吗?如果是这样,next()时应该是数据集已经全部在内存中了(不是100%确定)
    所以这时应该无关是执行的存储过程还是sql,因为结果已经返回。
    我觉得是和结果集相关。
      

  7.   

    在存储过程加异常处理:exception
       when others then
       rollback;。然后在Java里面加try catch ,在设置断点一步一步跟进。
      

  8.   


    非常确定只是一句next()就消耗了2,30分钟。
    next()时应该是数据集已经全部在内存中了(不是100%确定),這個不太明白。其他人說的或許有一定道理,比如資料庫死鎖,很有可能。但是我無法得知。但是存儲過程絕對沒有問題,因為這個系統02年上線用到現在了,都運營了好多年,存儲過程是沒有問題的。
      

  9.   


    确定只是一句next()就消耗了2,30分钟。
    不能排除是否是資料庫死鎖問題造成。