HPlogo ALLBASE/SQL Performance and Monitoring Guidelines: HP 9000 Computer Systems > Chapter 4 Guidelines on Transaction Design

Using KEEP CURSOR

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

After you specify KEEP CURSOR in an OPEN statement, a COMMIT WORK does not close the cursor, as it normally does. Instead, COMMIT WORK keeps the cursor open and begins a new transaction while maintaining the cursor position. This makes it possible to update tuples in a large active set, releasing locks as the cursor moves from page to page, instead of requiring you to reopen and manually reposition the cursor before the next FETCH.

Locks on the page of data corresponding to the current cursor position are either held (the default) or released, depending on whether you specify WITH LOCKS or WITH NOLOCKS. The KEEP CURSOR option retains the current isolation level (RR, CS, or RC) that you have specified in the BEGIN WORK statement. Moreover, the exact pattern of lock retention and release for cursors opened using KEEP CURSOR WITH LOCKS depends on the current isolation level. With the RC and RU isolation levels, no locks are maintained across transactions because locks are released at the end of the FETCH. Therefore, KEEP CURSOR WITH LOCKS has no effect on locks at the RC or RU isolation levels. Also, the WITH LOCKS option releases exclusive (X) locks on user tables at COMMIT WORK time in transactions using RC and RU. Remember that system catalog tables are locked at the RR isolation level; exclusive locks on these tables are retained until the CLOSE cursor statement that is immediately followed by a COMMIT WORK. For more information and examples, refer to the chapter "Processing with Cursors" in the appropriate ALLBASE/SQL Application Programming Guide.

Feedback to webmaster