UPDATE/DELETE … WHERE CURRENT OF

Informix®

Informix allows positioned UPDATEs and DELETEs with the "WHERE CURRENT OF cursor" clause, if the cursor has been DECLARED with a SELECT ... FOR UPDATE statement.

ORACLE

The UPDATE/DELETE ... WHERE CURRENT OF cursor statements are not support by the Oracle database API.

However, ROWIDs can be used for positioned updates and deletes.

Solution

UPDATE/DELETE ... WHERE CURRENT OF instructions are emulated by the ORACLE database interface by using ROWIDs:

The ORACLE database interface replaces WHERE CURRENT OF cursor by WHERE ROWID=:rid and sets the value of the ROWID returned by the last FETCH done with the given cursor.

As a replacement of WHERE CURRENT OF, if the database table is defined with a primary key column, use the value fetched from the SELECT [FOR UPDATE] cursor in the WHERE clause of the UPDATE/DELETE statement.