Types of Cursors

Cursors can be either updateable or non-updateable. If you only need to display information and not diddle with it, the non-updateable is the fastest. The provider simply passes you the data and forgets about it! There is no need to keep tabs on the data to see if it has been changed. Therefore, this is the fastest cursor to use.
Scrollable cursors, which can be updateable or non-updateable, permit you to move (scroll) back and forth in the recordset. If you only need to blast out some data to a grid or HTML page, a non-scrollable cursor will give a performance boost. This is because there is no need to track where you are in the recordset. This is the default. It is identical to the Static except that you can only scroll forward. The fastest cursor this side of the Pecos Mountains.
Keyset-Driven cursors take note of a key you may have in your database. Under normal circumstances, when you request records from a data source, you get the entire package. However, when a Keyset cursor is selected, only the keys are returned, giving a performance boost. Then, when you scroll through the recordset, the data for the keys is retrieved. However, when you first invoke the cursor, both keys and data are returned so you can see something in your bound control. When you scroll, and the data is not in the current batch of data, the Keyset fetches the next block. This way it only has to manage small keys rather than large chunks of data. This is similar to a Dynamic cursor except you can’t see records others add. If another user deletes a record, it is inaccessible from your recordset.
Dynamic and Static cursors determine what data is available in the cursor at any point in time. As the name implies, Static cursors only contain data that was placed in the cursor when it was created. Static cursors use for generating reports or finding data. Additions, changes, or deletions by other users are not visible. However, with a Dynamic cursor, any new records that are added to the recordset are available. Additions and deletions by others are visible. All movement is supported. But some providers don’t support Dynamic cursor type. It’s like a living cursor.

Tagged , . Bookmark the permalink.

3 Responses to Types of Cursors

  1. Marc Jellinek says:

    Why would people still be using cursors when there are so many better, more performant options?

  2. MIcael Uhas says:

    Dont ever use loop if there is another SET based solution, and there almost always is.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.