NutzCN Logo
问答 使用自定义sql查询sequence时报错ora-04016序列不在存在
发布于 2894天前 作者 Rock 2735 次浏览 复制 上一个帖子 下一个帖子
标签:

自定义sql:

select seqa.nextval from dual

正常执行也都没什么问题。突然在重建了seqa后,再执行以上sql报ora-04016 序列seqa不在存在。
重建seqa语句:

DROP SEQUENCE seqa;
CREATE SEQUENCE seqa INCREMENT BY 1 START WITH 1 MAXVALUE 9999999999999999 MINVALUE 1 NOCACHE ORDER;

重建的语句是在function中写的,由nutz的{?=call a(?)} 调用的。
以上内容都是在java程序中执行的。
已确认:报错时数据库里的seqa确实存在,在sqldeveloper及sqlplus中执行select seqa.nextval from dual都好用。
在程序中执行时偶尔也是可以通过的。如果将重建seqa语句在sqldeveloper中执行后,此问题就不在出现。
求各位大神帮分析下,这是什么原因,该怎么解决?

4 回复

是不是你的function就没执行成功,直接调用试试,不走function

来自炫酷的 NutzCN

@wendal 这个,drop和create是写在一个function里的,如果function就没执行成功的话,也不会drop啊,难道还会执行了drop不执行create?而且,数据库中的seqa确实也是没问题的耶

@mh281295900 所以分开成2条自定义sql跑跑看嘛

来自炫酷的 NutzCN

@wendal 好的,我试试,关键它还是莫名其妙的有时好使有时不好使,不好使的时候多跑几次也好使了。。。还得观察观察看。谢谢

添加回复
请先登陆
回到顶部