Программа PL/SQL для поиска факториала числа | Несколько методов

Вот программа на PL/SQL для нахождения факториала заданного числа:

-- PL/SQL program to find the factorial of a given number
DECLARE
  num NUMBER := &input_number;
  fact NUMBER := 1;
BEGIN
  IF num >= 0 THEN
    FOR i IN 1..num LOOP
      fact := fact * i;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('The factorial of ' || num || ' is ' || fact);
  ELSE
    DBMS_OUTPUT.PUT_LINE('Invalid input. Please enter a non-negative number.');
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
END;

Эта программа принимает число в качестве входных данных (input_number) и вычисляет его факториал с помощью цикла. Затем он отображает факториал данного числа.

Вот несколько альтернативных методов нахождения факториала числа:

  1. Использование рекурсивной функции:

    CREATE OR REPLACE FUNCTION factorial(n NUMBER) RETURN NUMBER IS
    BEGIN
    IF n = 0 THEN
    RETURN 1;
    ELSE
    RETURN n * factorial(n - 1);
    END IF;
    END;
  2. Использование SQL-запроса:

    SELECT num,
       CASE
         WHEN num = 0 THEN 1
         ELSE num * (SELECT num - 1 FROM dual CONNECT BY LEVEL <= num)
       END AS factorial
    FROM   (SELECT &input_number AS num FROM dual);