以下是我创建的序列:
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环境中运行,而这段代码在我的开发环境中运行得非常好。
任何专家都能提出他们的建议吗?
答案 0 :(得分:1)
您需要先拨打NEXVAL。这就是你得到错误的原因。
SELECT SEQ_SURVEY.NEXTVAL FROM DUAL
Oracle NEXTVAL函数用于检索序列中的下一个值。在调用CURRVAL函数之前调用Oracle NEXTVAL函数 ,否则将引发错误。 Oracle CURRVAL函数用于访问指定序列的当前值。请注意,CURRVAL只能在当前用户会话中引用NEXTVAL至少一次时使用。