 |
|
PL/SQL recursive calls: recursion in Oracle
Oracle Database Tips by Donald Burleson |
Question: Does Oracle
PL/SQL support recursive calls. I mean, can I use recursion to
have a function call itself?
Answer: Yes, PL/SQL does support recursion via function calls. Recursion is
the act of a function calling itself, and a recursive call requires PL/SQL to
create local copies of its memory structures for each call. The Oracle
docs notes:
?PL/SQL does allow for
recursive execution of function calls, however, so you can put it to use
inside a SQL statement where recursion is needed.?
The
PL/SQL User's Guide and Reference notes:
"A recursive subprogram
is one that calls itself. Each recursive call creates a new instance of any
items declared in the subprogram, including parameters, variables, cursors,
and exceptions.
Likewise, new instances
of SQL statements are created at each level in the recursive descent."
See here
for an example of
recursive
PL/SQL calls.
PL/SQL Recursive cursors
A "cursor" is not a PL/SQL
programmer who cusses, but rather, PL/SQL uses a cursor to keep a handle to each
recursive call. In PL/SQL, a
recursive cursor (a pointer to a shared SQL area)
is used to keep a pointer to each call of a recursive function in PL/SQL.
Recursive SQL
A ?Recursive
SQL statement? refers to additional "hidden" SQL that is issued for internal
Oracle functions such as re-caching paged-out data from the dictionary cache,
but we also see recursive SQL for these items, especially DDL:
-
Parsing a new SQL statement (validate table & column names, check security)
-
Space
management functions required to service DDL (create table)
-
Trigger code
-
SQL
within PL/SQL (functions and stored procedures)
-
Referential integrity checks
For more
examples of using recursion with PL/SQL,
see the outstanding book "Oracle
PL/SQL Tuning: Expert Secrets for High Performance Programming" by Dr. Tim
Hall, Oracle ACE of the year, 2006:
 |
If you like Oracle tuning, see the book "Oracle
Tuning: The Definitive Reference", with 950 pages of tuning tips and
scripts.
You can buy it direct from the publisher for 30%-off and get
instant access to the code depot of Oracle tuning scripts. |