这个问题我怎么也想不透
我宣告一个变量(retValue), 这个变量在最后会取得Storeprocedure 的回传值
一开始我给这个变量初值的内容为FAIL, 如果Storeprocedure执行正确会回传OK.
程序代码如下String retValue = "FAIL";
CallableStatement cs=cn.prepareCall("{CALL TFN_NEW_TFNNMS_NewCNM(?,?,?,?,?,?,?,?)}");
cs.setString(1, retValue);
....
....
cs.registerOutParameter(1, Types.VARCHAR);
cs.executeUpdate();
retValue = cs.getString(1); 
问题来了
我开发的本机是WinXp sp2 Jdk 1.5, 当执行正确, 最后的结果 retValue=OK
测试环境Win 2003 Server Jdk 1.6, 当执行正确, 最后的结果 retValue=OK
正式环境Win 2003 Server Jdk 1.6, 当执行正确, 最后的结果 retValue=OKIL <--啊这是怎么回事啊, 见鬼了~~~~

解决方案 »

  1.   

    先别急,也许不是程序的原因,看看你所使用的后台的Oracle的function是不是有问题了,看看在正式环境的库中是不是有问题,不是程序的问题
      

  2.   

    我知道这很玄, 自己写程序写了十几年从没碰过这样子的事.
    我也想是否程序出了问题? 然而程序是在开发环境试过, 放到
    测试环境再放到正式环境执行, 若当真程序出了问题, 应该在
    其它的环境也要有同样的结果.除非我在一开始retValue 变量的初值是String retValue = "”; 
    那么就没有最后怪异的现象, 但这是把眼睛闭起不看而已, 我只能说
    或许是ram有问题吧…
      

  3.   


    的确很奇怪 不过还是应该先怀疑自己的程序 呵呵.
    不能在运行环境下调试的话 就多打一些log 应该会有帮助.
      

  4.   

    第一,这跟你jdk的版本毫无关系
    第二,这跟你的操作系统也毫无关系
    第三,这跟java你写的代码也毫无关系
    所以,纯属意外,你不必介意这些问题,又或者,这本身就是你的意思