Cursor refreshing is the act of replacing the data associated with a cursor with fresh data from the database. Cursors will be refreshed by any of the following instances:
In some of these instances, the record a user was last positioned on before the refresh occurred may not be included in the cursor block of data after the refresh. In the first two instances, the query parameters have changed, and the record may not fit the new criteria. There’s a greater chance of that record still being included after the refresh in the last two instances, since the parameters haven’t changed. However, that record was still subject to changes from other users, who may have deleted it from the table or changed its key values.
If the last record the user was positioned on is still included in the table after the refresh occurs, the cursor block containing that record will be copied to the buffer on the client. If that record isn’t included in the table, the cursor block containing the record that followed that one in the table will be copied to the buffer on the client.
It’s a good idea to refresh the cursor if your application runs in a multiuser environment, if your cursor block size is large, or if the data involved is subject to frequent changes.