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