以下是我创建的序列:
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。这就是为什么您得到错误。
从双重选择SEQ_SURVEY.NEXTVAL
Oracle NEXTVAL函数用于检索序列中的下一个值。必须在调用CURRVAL函数之前调用Oracle NEXTVAL函数,否则将引发错误。 Oracle CURRVAL函数用于访问指定序列的当前值。请注意,只有在当前用户会话中至少一次引用了NEXTVAL时,才能使用CURRVAL。