Basic Oracle Concepts and Programming Question:
What Happens If Recursive Calls Get Out of Control?
Answer:
What happens if your code has bug on recursive procedure calls, which causes an infinite number nested procedure calls? The answer is so good. Oracle server seems to offer no protection calling stack limit. The script below shows you a badly coded recursive procedure. If you run it on an Oracle 10g XE server on Windows, your server will out of control and keep using virtual memory to satisfy the growing calling stack. You have to reboot your server to control back.
SQL> CREATE OR REPLACE PROCEDURE STACK_TEST AS
2 --Warning: do not run this procedure on your server
3 PROCEDURE STACK AS
4 BEGIN
5 STACK;
6 END;
7 BEGIN
8 STACK;
9 END;
10 /
SQL> EXECUTE STACK_TEST;
(your server keep running with 100% CPU and memory usage)
SQL> CREATE OR REPLACE PROCEDURE STACK_TEST AS
2 --Warning: do not run this procedure on your server
3 PROCEDURE STACK AS
4 BEGIN
5 STACK;
6 END;
7 BEGIN
8 STACK;
9 END;
10 /
SQL> EXECUTE STACK_TEST;
(your server keep running with 100% CPU and memory usage)
Previous Question | Next Question |
Can Sub Procedure/Function Be Called Recursively? | What Is the Order of Defining Local Variables and Sub Procedures/Functions? |