Oralce PL/SQL examples of recursion (#91)
This commit is contained in:
committed by
Aditya Bhargava
parent
31412a0b96
commit
ac08df2ee7
22
03_recursion/plsql/01_countdown.sql
Normal file
22
03_recursion/plsql/01_countdown.sql
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
SET SERVEROUTPUT ON
|
||||||
|
DECLARE
|
||||||
|
result NUMBER;
|
||||||
|
|
||||||
|
FUNCTION countdown(x NUMBER)
|
||||||
|
RETURN NUMBER
|
||||||
|
IS
|
||||||
|
f NUMBER;
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
dbms_output.put_line(x);
|
||||||
|
IF x <= 0 THEN
|
||||||
|
return x;
|
||||||
|
ELSE
|
||||||
|
f := countdown(x - 1);
|
||||||
|
END IF;
|
||||||
|
RETURN f;
|
||||||
|
END;
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
result := countdown(5);
|
||||||
|
END;
|
||||||
28
03_recursion/plsql/02_greet.sql
Normal file
28
03_recursion/plsql/02_greet.sql
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
CREATE OR REPLACE PROCEDURE greet2(names IN VARCHAR2 )
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
dbms_output.put_line('how are you, ' || names || '?');
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE bye
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
dbms_output.put_line('ok bye!');
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE greet(names IN VARCHAR2)
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
dbms_output.put_line('hello, ' || names || '!');
|
||||||
|
greet2(names);
|
||||||
|
dbms_output.put_line('getting ready to say bye...');
|
||||||
|
bye();
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
|
SET SERVEROUTPUT ON
|
||||||
|
BEGIN
|
||||||
|
greet('adit');
|
||||||
|
END;
|
||||||
22
03_recursion/plsql/03_factorial.sql
Normal file
22
03_recursion/plsql/03_factorial.sql
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
SET SERVEROUTPUT ON
|
||||||
|
DECLARE
|
||||||
|
result NUMBER;
|
||||||
|
|
||||||
|
FUNCTION factorial(x NUMBER)
|
||||||
|
RETURN NUMBER
|
||||||
|
IS
|
||||||
|
f NUMBER;
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
IF x = 0 THEN
|
||||||
|
f := 1;
|
||||||
|
ELSE
|
||||||
|
f := x * factorial(x - 1);
|
||||||
|
END IF;
|
||||||
|
RETURN f;
|
||||||
|
END;
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
result := factorial(5);
|
||||||
|
dbms_output.put_line(result);
|
||||||
|
END;
|
||||||
Reference in New Issue
Block a user