Stored Procedure Function Oracle PLSQL

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> --