Reopen Cursors to Reuse Them
David Clement
September 2004
Oracle versions 7-8
One of Oracle's extensions to the ANSI definition of SQL is that in
the Pro*C/C++ environment it is legal to reopen a cursor that has
not closed. The effect of repeating the open statement
on an already open cursor is to reevaluate the cursor and get a new
result set. The cursor is executed afresh, without the overhead of
parsing.
This extension is an important optimization for long-running
batch processes. It is a fast way to poll a queue to see if
new items have arrived. It is also handy where the cursor is
long-running and has a risk of encountering ORA-01555, "Snapshot too
old," because it can be used to shorten the lifespan of transactions
without the overhead of hard parsing.
|