Collections:
Call Procedure or Function Recursively in Oracle
Can Sub Procedure/Function Be Called Recursively in Oracle?
✍: FYIcenter.com
PL/SQL allows sub procedures or functions to be called recursively. The tutorial example below shows you how to calculate factorial values with a recursive sub function:
SQL> CREATE OR REPLACE PROCEDURE FACTORIAL_TEST AS
2 FUNCTION FACTORIAL(N NUMBER)
3 RETURN NUMBER AS
4 BEGIN
5 IF N <= 1 THEN
6 RETURN 1;
7 ELSE
8 RETURN N*FACTORIAL(N-1);
9 END IF;
10 END;
11 BEGIN
12 DBMS_OUTPUT.PUT_LINE('3! = ' ||
13 TO_CHAR(FACTORIAL(3)));
14 DBMS_OUTPUT.PUT_LINE('10! = ' ||
15 TO_CHAR(FACTORIAL(10)));
16 DBMS_OUTPUT.PUT_LINE('64! = ' ||
17 TO_CHAR(FACTORIAL(64)));
18 END;
19 /
SQL> EXECUTE FACTORIAL_TEST;
3! = 6
10! = 3628800
64! = 126886932185884164103433389335161480802000000000000...
There must be something wrong with the FACTORIAL() definition that causes those many extra '0's in the '64!' result.
⇒ Run-Away Recursive Calls in Oracle
⇐ Define a Sub Function in Oracle
2018-03-18, 3141🔥, 0💬
Popular Posts:
Where to find answers to frequently asked questions on INSERT, UPDATE and DELETE Statements in MySQL...
What is dba.FYIcenter.com Website about? dba.FYIcenter.com is a Website for DBAs (database administr...
What Privilege Is Needed for a User to Delete Rows from Tables in Another Schema in Oracle? For a us...
How To Convert a Unicode Strings to Non-Unicode Strings in SQL Server Transact-SQL? Since Unicode ch...
How To Count Rows with the COUNT(*) Function in SQL Server? If you want to count the number of rows,...