ITPUB??ì3
ITPUB论坛 » Java企业开发 » jsp页面调用oracle存储过程为什么总是报ORA-08103: object no longer exists


标题: jsp页面调用oracle存储过程为什么总是报ORA-08103: object no longer exists
离线 Arraychinasyh
老会员



精华贴数 0
个人空间 0
技术积分 825 (2254)
社区积分 4238 (323)
注册日期 2004-6-4
论坛徽章:16
会员2007贡献徽章2008北京奥运纪念徽章:马术生肖徽章2007版:蛇生肖徽章2007版:鼠ITPUB新首页上线纪念徽章 
      

发表于 2006-5-11 10:07 
jsp页面调用oracle存储过程为什么总是报ORA-08103: object no longer exists

问题如题,下面是部分代码:
ls_exe_sql = " call p_bi_mps_plan_vs_impl(?,?) ";
   OracleCallableStatement CallStmt = (OracleCallableStatement)conn.prepareCall(ls_exe_sql);
   CallStmt.registerOutParameter(2,OracleTypes.CURSOR);
   
   ls_itm_nm1 = new String(ls_itm_nm.getBytes("gb2312","8859_1";
   CallStmt.setString( 1,ls_itm_nm1 );
   CallStmt.execute();
rs = (OracleResultSet)CallStmt.getCursor(2);
其中存储过程p_bi_mps_plan_vs_impl的第二个参数为ref cursor,可是一旦调用红色字体语句就保错:ORA-08103: object no longer exists,
为什么呢?急需帮助!


只看该作者    顶部
离线 chinasyh
老会员



精华贴数 0
个人空间 0
技术积分 825 (2254)
社区积分 4238 (323)
注册日期 2004-6-4
论坛徽章:16
会员2007贡献徽章2008北京奥运纪念徽章:马术生肖徽章2007版:蛇生肖徽章2007版:鼠ITPUB新首页上线纪念徽章 
      

发表于 2006-5-11 15:15 
不知道是这个问题没有描述清楚还是这里的人气不高,这个问题我在asktom上找到答案就是如果oracle存储过程中有insert,update,delete这些语句并且有返回cursor这样的类型,需要显式设置conn.setAutoCommit(false),在调用过程后设置为conn.setAutoCommit(true);就可以了。另外有个小提示给初学者,如果遇到:NullPointer错误后,可能是函数中参数有NULL值,这个问题在从oracle到java的学习者中有时候会感觉莫名其妙。这时候需要把null值转换为非null值。
这也是今天我的一点收获。


只看该作者    顶部
离线 wastelandxf



精华贴数 0
个人空间 0
技术积分 52 (26815)
社区积分 0 (1721419)
注册日期 2008-3-14
论坛徽章:0
      
      

发表于 2008-5-13 17:53 
经过漫长的蹉跎岁月以后,兄弟我遇到同样的问题,在这里解决了,非常感谢!!


只看该作者    顶部
离线 mentus



精华贴数 0
个人空间 0
技术积分 56 (25361)
社区积分 0 (1766200)
注册日期 2008-5-7
论坛徽章:0
      
      

发表于 2008-6-1 16:21 
mark


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问