Вот программа на 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) и вычисляет его факториал с помощью цикла. Затем он отображает факториал данного числа.
Вот несколько альтернативных методов нахождения факториала числа:
-
Использование рекурсивной функции:
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; -
Использование 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);