SQL>
SQL> CREATE OR REPLACE FUNCTION Factorial(p_MyNum INTEGER)
2 RETURN NUMBER AS
3 BEGIN -- Start of Factorial Function
4 IF p_MyNum = 1 THEN -- Checking for last value to process of n-1
5 RETURN 1;
6 ELSE
7 RETURN(p_MyNum * Factorial(p_MyNum-1)); -- Recursive
8 END IF;
9 END;
10 /
Function created.
SQL>
SQL> DECLARE
2 v_test NUMBER := 10;
3 v_Counter INTEGER ; -- Counter for For Loop
4 BEGIN
5 FOR v_Counter IN 1..v_test LOOP
6 DBMS_OUTPUT.PUT_LINE('The factorial of ' ||
7 v_Counter || ' is ' || factorial(v_Counter));
8 END LOOP;
9 END;
10 /
The factorial of 1 is 1
The factorial of 2 is 2
The factorial of 3 is 6
The factorial of 4 is 24
The factorial of 5 is 120
The factorial of 6 is 720
The factorial of 7 is 5040
The factorial of 8 is 40320
The factorial of 9 is 362880
The factorial of 10 is 3628800
PL/SQL procedure successfully completed.
SQL>
SQL> --