java - JDBC 错误 : java. sql.SQLException: ORA-08002: 在此 session 中尚未定义序列

标签 java oracle jdbc

下面是我创建的序列:

CREATE SEQUENCE  SEQ_SURVEY INCREMENT BY 1 START WITH 1 NOCACHE  NOCYCLE ;

在我的 JDBC 代码中,我使用:

String currentValueFromSequence = "SELECT SEQ_SURVEY.CURRVAL FROM DUAL";
PreparedStatement getCurrValFromSeq = con.prepareStatement(currentValueFromSequence);

ResultSet getSurveyResponseID = getCurrValFromSeq.executeQuery();

它抛出一个错误,指出:

java.sql.SQLException: ORA-08002: sequence SEQ_SURVEY.CURRVAL is not yet defined in this session

我无法理解为什么这段代码没有在我的 QA 环境中运行,而这段代码在我的开发环境中运行得很好。

有专家可以提供一下建议吗?

最佳答案

您需要先调用 NEXVAL。这就是您收到错误的原因。

从 DUAL 中选择 SEQ_SURVEY.NEXTVAL

Oracle NEXTVAL 函数用于检索序列中的下一个值。 Oracle NEXTVAL 函数必须在调用CURRVAL 函数之前调用,否则将引发错误。 Oracle CURRVAL 函数用于访问指定序列的当前值。请注意,只有在当前用户 session 中至少引用了一次 NEXTVAL 时,才能使用 CURRVAL。

关于java - JDBC 错误 : java. sql.SQLException: ORA-08002: 在此 session 中尚未定义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374767/

相关文章:

java - 当在JSP中单击提交按钮时,如何将HTML5验证添加到隐藏标签中?

oracle - PL/SQL : Execute procedure in another procedure

java - Oracle 数据库返回的字符串与 MySql 不同

java - 获取 `ResultSet` 大小的最佳方法

java - 在多线程环境中处理事务

java - Swig 类型映射 java 对象

java - 从 selectOneMenu 更新 EJB 模型

sql - 如何获取具有最新2个版本号的记录

java - sql server jdbc 查询日期时间列

java - 带有时区偏移的joda日期时间,插入数据库后将更改为UTC时间