Skip to Content
Oracle PL/SQL for DBAs
book

Oracle PL/SQL for DBAs

by Arup Nanda, Steven Feuerstein
October 2005
Intermediate to advanced
454 pages
14h 44m
English
O'Reilly Media, Inc.
Content preview from Oracle PL/SQL for DBAs

Soft-Closing Cursors

When I am building applications, I am a firm believer in extending assumptions in order to squeeze out every little bit of extra performance or throughput. I’m forever asking questions—for example, if the same Oracle session executes my PL/SQL function repeatedly, why don’t I cache some of the setup information instead of querying it each time? Or, if I know that underlying data changes only hourly, why can’t I cache the result sets and avoid requerying the database until 60 minutes pass?

One assumption that Oracle itself extends is that once a session uses a cursor, it will eventually reuse it—even if it is explicitly closed. The trickery used to accomplish this feat is known as soft closing, or what I refer to as “the close that’s not a close.”

Consider this simple example of an implicit cursor.

    SQL> SELECT NULL
      2    FROM DUAL;

    N
    -

    1 row selected

The implicit cursor was created, opened, fetched, and closed—all in the SELECT statement. So now it should be disassociated with the session that executed it, right? Not so fast. In order to take better advantage of potential reuse, the cursor is soft-closed only within the session to make subsequent reuse by that session faster.

The cursors associated with a particular session are shown in the V$OPEN_CURSOR view . That view includes any cursors currently open as well as those that have been soft-closed. Here’s what the view shows for the session querying the DUAL table.

    SQL> SELECT sql_text
      2    FROM v$open_cursor
      3   WHERE ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Oracle Database 12c PL/SQL Programming

Oracle Database 12c PL/SQL Programming

Michael McLaughlin
Expert PL/SQL Practices for Oracle Developers and DBAs

Expert PL/SQL Practices for Oracle Developers and DBAs

John Beresniewicz, Adrian Billington, Martin Büchi, Melanie Caffrey, Ron Crisco, Lewis Cunningham, Dominic Delmolino, Sue Harper, Torben Holm, Connor McDonald, Arup Nanda, Stephan Petit, Michael Rosenblum, Robyn Sands, Riyaj Shamsudeen

Publisher Resources

ISBN: 0596005873Supplemental ContentErrata Page