以下是我创建的序列:

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。

09-15 20:50