0% found this document useful (0 votes)
9 views14 pages

DBMS Lab

The document contains multiple PL/SQL programs demonstrating various functionalities including generating a Fibonacci series, calculating factorials, reversing strings, summing a series, creating triggers, and analyzing student marks using cursors. Each program is accompanied by its output, showcasing the results of the operations performed. The programs illustrate fundamental programming concepts in PL/SQL.

Uploaded by

nallamaniartsbca
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views14 pages

DBMS Lab

The document contains multiple PL/SQL programs demonstrating various functionalities including generating a Fibonacci series, calculating factorials, reversing strings, summing a series, creating triggers, and analyzing student marks using cursors. Each program is accompanied by its output, showcasing the results of the operations performed. The programs illustrate fundamental programming concepts in PL/SQL.

Uploaded by

nallamaniartsbca
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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;
/

Downloaded by bca nallamani ([email protected])


lOMoARcPSD|45075901

OUTPUT:

Fibonacci Series up to 10 terms:


0
1
1
2
3
5
8
13
21
34

Downloaded by bca nallamani ([email protected])


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;
/

Downloaded by bca nallamani ([email protected])


lOMoARcPSD|45075901

OUTPUT:

Factorial of 5 is 120

Downloaded by bca nallamani ([email protected])


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;
/

Downloaded by bca nallamani ([email protected])


lOMoARcPSD|45075901

OUTPUT:

Original String: OpenAI


Reversed String: IAnepO

Downloaded by bca nallamani ([email protected])


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;
/

Downloaded by bca nallamani ([email protected])


lOMoARcPSD|45075901

OUTPUT:
Sum of first 10 natural numbers is: 55

Downloaded by bca nallamani ([email protected])


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);

Downloaded by bca nallamani ([email protected])


lOMoARcPSD|45075901

OUTPUT:

New employee inserted: John Doe

Downloaded by bca nallamani ([email protected])


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;

Downloaded by bca nallamani ([email protected])


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

Downloaded by bca nallamani ([email protected])


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;
/

Downloaded by bca nallamani ([email protected])


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
-------------------------------

Downloaded by bca nallamani ([email protected])

You might also like