lOMoARcPSD|45075901
PROGRAM: FIBONACCI SERIES
DECLARE
n NUMBER := 10; -- Number of terms in the Fibonacci series
a NUMBER := 0;
b NUMBER := 1;
c NUMBER;
i NUMBER := 1;
BEGIN
DBMS_OUTPUT.PUT_LINE('Fibonacci Series up to ' || n || ' terms:');
WHILE i <= n LOOP
DBMS_OUTPUT.PUT_LINE(a);
c := a + b;
a := b;
b := c;
i := i + 1;
END LOOP;
END;
/
lOMoARcPSD|45075901
OUTPUT:
Fibonacci Series up to 10 terms:
0
1
1
2
3
5
8
13
21
34
lOMoARcPSD|45075901
PROGRAM: FACTORIAL
DECLARE
n NUMBER := 5; -- Input number
fact NUMBER := 1;
i NUMBER;
BEGIN
IF n < 0 THEN
DBMS_OUTPUT.PUT_LINE('Factorial is not defined for negative numbers.');
ELSIF n = 0 THEN
DBMS_OUTPUT.PUT_LINE('Factorial of 0 is 1');
ELSE
FOR i IN 1..n LOOP
fact := fact * i;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Factorial of ' || n || ' is ' || fact);
END IF;
END;
/
lOMoARcPSD|45075901
OUTPUT:
Factorial of 5 is 120
lOMoARcPSD|45075901
PROGRAM: STRING REVERSE
DECLARE
original_str VARCHAR2(100) := 'OpenAI';
reversed_str VARCHAR2(100) := '';
i NUMBER;
BEGIN
FOR i IN REVERSE 1 .. LENGTH(original_str) LOOP
reversed_str := reversed_str || SUBSTR(original_str, i, 1);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Original String: ' || original_str);
DBMS_OUTPUT.PUT_LINE('Reversed String: ' || reversed_str);
END;
/
lOMoARcPSD|45075901
OUTPUT:
Original String: OpenAI
Reversed String: IAnepO
lOMoARcPSD|45075901
PROGRAM: SUM OF SERIES
DECLARE
n NUMBER := 10; -- You can change this
sum NUMBER := 0;
i NUMBER;
BEGIN
FOR i IN 1..n LOOP
sum := sum + i;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Sum of first ' || n || ' natural numbers is: ' || sum);
END;
/
lOMoARcPSD|45075901
OUTPUT:
Sum of first 10 natural numbers is: 55
lOMoARcPSD|45075901
PROGRAM: TRIGGER
Create the Table:
CREATE TABLE employees (
emp_id NUMBER PRIMARY KEY,
name VARCHAR2(100),
salary NUMBER
);
Create the Trigger:
CREATE OR REPLACE TRIGGER trg_after_insert_emp
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('New employee inserted: ' || :NEW.name);
END;
/
Test the Trigger:
INSERT INTO employees (emp_id, name, salary) VALUES (1, 'John Doe', 50000);
lOMoARcPSD|45075901
OUTPUT:
New employee inserted: John Doe
lOMoARcPSD|45075901
PROGRAM: STUDENT MARK ANALYSIS USING CURSOR
Create the Table:
CREATE TABLE students (
student_id NUMBER PRIMARY KEY,
name VARCHAR2(100),
mark1 NUMBER,
mark2 NUMBER,
mark3 NUMBER
);
Insert Sample Data:
INSERT INTO students VALUES (1, 'Alice', 85, 90, 78);
INSERT INTO students VALUES (2, 'Bob', 45, 55, 60);
INSERT INTO students VALUES (3, 'Charlie', 95, 88, 92);
INSERT INTO students VALUES (4, 'David', 30, 25, 40);
COMMIT;
PL/SQL Program Using Cursor:
DECLARE
-- Cursor to fetch student records
CURSOR student_cur IS
SELECT student_id, name, mark1, mark2, mark3 FROM students;
-- Variables to hold values fetched from the cursor
v_id students.student_id%TYPE;
lOMoARcPSD|45075901
v_name students.name%TYPE;
v_m1 students.mark1%TYPE;
v_m2 students.mark2%TYPE;
v_m3 students.mark3%TYPE;
-- Variables for processing
v_total NUMBER;
v_percent NUMBER;
v_grade CHAR(1);
BEGIN
OPEN student_cur;
LOOP
FETCH student_cur INTO v_id, v_name, v_m1, v_m2, v_m3;
EXIT WHEN student_cur%NOTFOUND;
-- Calculate total and percentage
v_total := v_m1 + v_m2 + v_m3;
v_percent := v_total / 3;
-- Assign grade based on percentage
IF v_percent >= 90 THEN
v_grade := 'A';
ELSIF v_percent >= 75 THEN
v_grade := 'B';
ELSIF v_percent >= 60 THEN
v_grade := 'C';
ELSIF v_percent >= 50 THEN
lOMoARcPSD|45075901
v_grade := 'D';
ELSE
v_grade := 'F';
END IF;
-- Display result
DBMS_OUTPUT.PUT_LINE('Student ID : ' || v_id);
DBMS_OUTPUT.PUT_LINE('Name : ' || v_name);
DBMS_OUTPUT.PUT_LINE('Total Marks : ' || v_total);
DBMS_OUTPUT.PUT_LINE('Percentage : ' || ROUND(v_percent, 2));
DBMS_OUTPUT.PUT_LINE('Grade : ' || v_grade);
DBMS_OUTPUT.PUT_LINE('-------------------------------');
END LOOP;
CLOSE student_cur;
END;
/
lOMoARcPSD|45075901
OUTPUT:
Student ID : 1
Name : Alice
Total Marks : 253
Percentage : 84.33
Grade :B
-------------------------------
Student ID : 2
Name : Bob
Total Marks : 160
Percentage : 53.33
Grade :D
-------------------------------
Student ID : 3
Name : Charlie
Total Marks : 275
Percentage : 91.67
Grade :A
-------------------------------
Student ID : 4
Name : David
Total Marks : 95
Percentage : 31.67
Grade :F
-------------------------------