问题
I am getting org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL
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 state [24000]; error code [1002]; ORA-01002: fetch out of sequence ; nested exception is java.sql.SQLException: ORA-01002: fetch out of sequence
JAVA code :
getJdbcTemplate().queryForObject(SurveyQuery.UPDATE_INPROCESS, Integer.class);
Please let me know what is wrong in above query
回答1:
You can modify your UPDATE
statement to something like below
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)
Note: Though you can use the above modified query but I doubt the said error is because of the posted update statement. From Documentation it looks like the cause of the above error could be
When you perform a FETCH on an active cursor after all records have been fetched.
(OR)
When you perform a FETCH on a SELECT FOR UPDATE after a COMMIT has been issued.
来源:https://stackoverflow.com/questions/26707896/ora-01002-fetch-out-of-sequence