jsp页面调用oracle存储过程为什么总是报ORA-08103: object no longer exists 错误提示呢?

wsjie12345 2010-11-12 03:45:20
jsp页面调用oracle存储过程为什么总是报ORA-08103: object no longer exists 错误提示呢?

调用代码:{call INDI_QUERY_AAA(?)}

我在别的贴上看到这样答案:
就是如果oracle存储过程中有insert,update,delete这些语句并且有返回cursor这样的类型,需要显式设置conn.setAutoCommit(false),在调用过程后设置为conn.setAutoCommit(true);就可以了。

我的存储过程中也有insert,update,delete这些语句并且有返回cursor这样的类型,但我不知道怎么编写方法来设置:conn.setAutoCommit(true);

请各位java高手们帮忙帮忙,谢谢了各位!
...全文
383 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazylaa 2010-11-12
  • 打赏
  • 举报
回复
临时表的建表语句看看。

还有
conn.setAutoCommit(false);
指的是在java中调用存储过程之前,获得连接之后,马上做这个。
wsjie12345 2010-11-12
  • 打赏
  • 举报
回复
然后我在页面上就需要调用这存储过程,得到结果显示出来就可以了。当调用这个存储过程的时候,就会报那样的错误。
wsjie12345 2010-11-12
  • 打赏
  • 举报
回复
是用了临时表了。以下是调用的存储过程,这个里面还有调用另外一个存储过程,另外一个太长了。
create or replace procedure indi_query_AAA
(p_cursor out pak_return_procdata.cur_returndata)
is
v_rownube number;
v_rownube_char varchar2(100);
v_indiobjid varchar2(100);
CURSOR p_indiobjid IS
select t.indiobjid
from indi_t_indibilldetail t
where t.billtypeobjid = '3001096700000001' and rownum<=3
ORDER BY t.indiobjid;
BEGIN
DBMS_OUTPUT.ENABLE (1000000000);
OPEN p_indiobjid;
v_rownube :=0;
LOOP
v_rownube:=v_rownube+1;
v_rownube_char:=right('01000'||to_char(v_rownube),5);

FETCH p_indiobjid INTO v_indiobjid;
EXIT WHEN p_indiobjid%NOTFOUND;
indi_query_NN(v_rownube_char,v_indiobjid,'', '0');
dbms_output.put_line(v_indiobjid);
END LOOP;
open p_cursor for select * from TEMP_AAA;
CLOSE p_indiobjid;
END;
crazylaa 2010-11-12
  • 打赏
  • 举报
回复
是不是使用了临时表?
是不是在存储过程总使用了commit??把你的存储过程拿来晒晒。。
wsjie12345 2010-11-12
  • 打赏
  • 举报
回复
当前用户下是存在那个存储过程的!
因为我们都可以查询到存储过程的字段列出来了,就是数据不出来。点预览数据的时候就提示以上的错误。
crazylaa 2010-11-12
  • 打赏
  • 举报
回复
ORA-08103: object no longer exists

跟auto不autocommit没有鸟毛关系。

这个错误是因为你调用的某个对象不存在!!!
检查当前用户下是否存在你那个存储过程!
如果存在在其他用户下,需要
call otherUser.存储过程!

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧