PL/SQL PROGRAMS
[Link] Series
DECLARE
a NUMBER := 0;
b NUMBER := 1;
c NUMBER;
i NUMBER := 1;
n NUMBER := 10; -- Change this number for how many terms you
want
BEGIN
DBMS_OUTPUT.PUT_LINE('Position Fibonacci_Number');
WHILE i <= n LOOP
DBMS_OUTPUT.PUT_LINE(i || ' ' || a);
c := a + b;
a := b;
b := c;
i := i + 1;
END LOOP;
END
/
OUTPUT
[Link]
DECLARE
n NUMBER := 5; -- Change this to control the limit
i NUMBER := 1;
fact NUMBER := 1;
BEGIN
DBMS_OUTPUT.PUT_LINE('Number Factorial');
WHILE i <= n LOOP
fact := fact * i;
DBMS_OUTPUT.PUT_LINE('Factorial of ' || i || ' is ' || fact);
i := i + 1;
END LOOP;
END;
/
OUTPUT
[Link] Reverse
DECLARE
input_str VARCHAR2(255) := 'data base'; -- Change input here
reversed_str VARCHAR2(255) := '';
i NUMBER;
BEGIN
i := LENGTH(input_str);
WHILE i > 0 LOOP
reversed_str := reversed_str || SUBSTR(input_str, i, 1);
i := i - 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Original String: ' || input_str);
DBMS_OUTPUT.PUT_LINE('Reversed String: ' || reversed_str);
END;
/
OUTPUT
[Link] of Series
DECLARE
n NUMBER := 10; -- Change this value for N
i NUMBER := 1;
total_sum NUMBER := 0;
BEGIN
WHILE i <= n LOOP
total_sum := total_sum + i;
i := i + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('N = ' || n);
DBMS_OUTPUT.PUT_LINE('Sum of Series = ' || total_sum);
END;
/
OUTPUT
[Link]
CREATE TABLE Books (
book_id NUMBER PRIMARY KEY,
title VARCHAR2(100),
author VARCHAR2(100),
quantity NUMBER
);
OUTPUT: Table created.
CREATE TABLE Book_Log (
log_id NUMBER PRIMARY KEY,
book_id NUMBER,
action VARCHAR2(50),
action_date DATE
);
OUTPUT: Table created.
INSERT INTO Books (book_id, title, author, quantity)
VALUES (1, 'Database Systems', 'Navathe', 10);
OUTPUT: 1 row(s) inserted.
CREATE SEQUENCE Book_Log_seq START WITH 1 INCREMENT BY 1;
OUTPUT: Sequence created.
SELECT * FROM Books;
OUTPUT
BOOK_ID TITLE AUTHOR QUANTITY
1 Database Systems Navathe 10
SELECT *FROM Book_Log;
OUTPUT
LOG_ID BOOK_ID ACTION ACTION_DATE
1 1 Book Added 27-AUG-25
CREATE OR REPLACE TRIGGER trg_after_book_insert
AFTER INSERT ON Books
FOR EACH ROW
BEGIN
INSERT INTO Book_Log (log_id, book_id, action, action_date)
VALUES (Book_Log_seq.NEXTVAL, :NEW.book_id, 'Book Added',
SYSDATE);
END;
\
OUTPUT: Trigger created.
Cursor
CREATE TABLE student_mark_analysis (
student_id NUMBER GENERATED BY DEFAULT AS IDENTITY
PRIMARY KEY,
student_name VARCHAR2(100),
subject VARCHAR2(50),
marks NUMBER
);
INSERT INTO student_mark_analysis (student_name, subject, marks)
VALUES ('John', 'Math', 85);
INSERT INTO student_mark_analysis (student_name, subject, marks)
VALUES ('Alice', 'Science', 90);
INSERT INTO student_mark_analysis (student_name, subject, marks)
VALUES ('Bob', 'English', 78);
SET SERVEROUTPUT ON;
DECLARE
CURSOR mark_cursor IS
SELECT student_name, subject, marks FROM
student_mark_analysis;
s_name student_mark_analysis.student_name%TYPE;
sub student_mark_analysis.subject%TYPE;
mark student_mark_analysis.marks%TYPE;
BEGIN
OPEN mark_cursor;
LOOP
FETCH mark_cursor INTO s_name, sub, mark;
EXIT WHEN mark_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Student: ' || s_name || ', Subject: '
|| sub || ', Marks: ' || mark);
END LOOP;
CLOSE mark_cursor;
END;
/
OUTPUT