-508   THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT POSITIONED ON A ROW OR ROWSET THAT CAN BE UPDATED OR DELETED

Explanation

The application program attempted to execute an UPDATE or DELETE WHERE CURRENT OF cursor statement at a time when the specified cursor was not positioned on a row or rowset of the object table. The cursor must be positioned on the row that is to be updated or deleted.

This can occur in the following situations:
  • The cursor is no longer positioned on the row because another cursor in the same application program deletes the row or updates an index column. This includes deletes and index column updates that are performed as a result of rolling back to a savepoint.
  • A sensitive dynamic cursor with the FOR ROW n OF ROWSET clause is specified, and the specified row of the current rowset has been updated or deleted.

System action

The statement cannot be processed. No data was updated or deleted, and the cursor position is unchanged.

Programmer response

Correct the logic of the application program to ensure that the cursor is correctly positioned on the intended row of the object table before the UPDATE or DELETE statement is executed. Note that for single row or non-rowset cursors, the cursors are not positioned on a row if FETCH returned SQLCODE +100.

SQLSTATE

24504