我正在获取org.springframework.jdbc.UncategorizedSQLException:PreparedStatementCallback;未分类SQL的SQLException
UPDATE responses
SET version_no = ( version_no + 1 ),
read_status = 0,
tslastmodified = SYSDATE
WHERE responseid IN (SELECT responseid
FROM responses
WHERE read_status = 1
AND tslastmodified < SYSDATE - 45 / ( 24 * 60 )
AND id IN (SELECT id
FROM emp))
SQL状态[24000];错误代码[1002]; ORA-01002:取消顺序 ;嵌套异常是java.sql.SQLException:ORA-01002:fetch out of sequence
JAVA代码:
getJdbcTemplate().queryForObject(SurveyQuery.UPDATE_INPROCESS, Integer.class);
请告诉我上述查询中的错误
答案 0 :(得分:1)
您可以将UPDATE
语句修改为以下内容
UPDATE RESPONSES SET VERSION_NO=(VERSION_NO+1),
READ_STATUS=0,
TSLASTMODIFIED = SYSDATE
WHERE READ_STATUS = 1
AND TSLASTMODIFIED < SYSDATE - 45/(24*60)
AND EXISTS (SELECT 1 FROM EMP
WHERE RESPONSES.ID = EMP.ID)
注意:虽然您可以使用上面修改过的查询,但我怀疑上述错误是因为发布的更新语句。从Documentation看起来上述错误的原因可能是
在所有记录都有活动光标后执行FETCH时 被抓了。
(OR)
在COMMIT之后在SELECT FOR UPDATE上执行FETCH时 已经发行。