下面是我创建的序列:
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/