0% found this document useful (0 votes)
14 views10 pages

Assignment 6

The document discusses three SQL queries and PL/SQL procedures. Query 1 calculates library book return fines based on return date. Query 2 checks bank account statuses and moves active accounts to a new table. Query 3 inserts student marks, runs them through a grade calculation procedure, and outputs the results.

Uploaded by

swetank.raut22
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)
14 views10 pages

Assignment 6

The document discusses three SQL queries and PL/SQL procedures. Query 1 calculates library book return fines based on return date. Query 2 checks bank account statuses and moves active accounts to a new table. Query 3 inserts student marks, runs them through a grade calculation procedure, and outputs the results.

Uploaded by

swetank.raut22
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
You are on page 1/ 10

Assignment 6

Code:

Q1)
SQL> select * from borrower;

CUST_NAME LOAN_NO
-------------------------------------------------- ----------
Priya 1
Raj 2
Jay 3
Suhani 4

SQL> select * from borrower2;

ROLLNO NAME DATEOFISS


---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------
1 Ishita 05-FEB-24
Harry Potter
I

2 Krish 01-FEB-24
Circe
I

ROLLNO NAME DATEOFISS


---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------

3 Priya 20-JAN-24
Nancy Drew
I

4 Manya 11-JAN-24
Oliver Twist
ROLLNO NAME DATEOFISS
---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------
I

SQL> select * from fine;

ROLLNO DATEOFRET AMT


---------- --------- ----------
1 15-FEB-24
2 15-FEB-24
3 15-FEB-24
4 15-FEB-24

SQL> set serveroutput on;


SQL> declare
2 mroll number(10);
3 mname varchar(50);
4 days number(10);
5 issuedate date;
6 returndate date;
7 fineamt number(10);
8 begin
9 mroll:=&rollno;
10 mname:='&nameofbook';
11 select dateofissue into issuedate from borrower2 where rollno=mroll;
12 select dateofreturn into returndate from fine where rollno=mroll;
13 days:=returndate-issuedate;
14 if days>15 and days<30 then
15 fineamt:=days*5;
16 update fine set amt=fineamt where rollno=mroll;
17 update borrower2 set status='R' where rollno=mroll;
18 elsif days>30 then
19 fineamt:=days*50;
20 update fine set amt=fineamt where rollno=mroll;
21 update borrower2 set status='R' where rollno=mroll;
22 else
23 update borrower2 set status='R' where rollno=mroll;
24 end if;
25 exception
26 when no_data_found then
27 dbms_output.put_line(mroll||'Not found');
28 End;
29 /
Enter value for rollno: 1
old 9: mroll:=&rollno;
new 9: mroll:=1;
Enter value for nameofbook: Harry Potter
old 10: mname:='&nameofbook';
new 10: mname:='Harry Potter';

PL/SQL procedure successfully completed.

SQL> select * from borrower2;

ROLLNO NAME DATEOFISS


---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------
1 Ishita 05-FEB-24
Harry Potter
R

2 Krish 01-FEB-24
Circe
I

ROLLNO NAME DATEOFISS


---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------

3 Priya 20-JAN-24
Nancy Drew
I

4 Manya 11-JAN-24
Oliver Twist

ROLLNO NAME DATEOFISS


---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------
I

SQL> select * from fine;

ROLLNO DATEOFRET AMT


---------- --------- ----------
1 15-FEB-24
2 15-FEB-24
3 15-FEB-24
4 15-FEB-24

SQL> declare
2 mroll number(10);
3 mname varchar(50);
4 days number(10);
5 issuedate date;
6 returndate date;
7 fineamt number(10);
8 begin
9 mroll:=&rollno;
10 mname:='&nameofbook';
11 select dateofissue into issuedate from borrower2 where rollno=mroll;
12 select dateofreturn into returndate from fine where rollno=mroll;
13 days:=returndate-issuedate;
14 if days>15 and days<30 then
15 fineamt:=days*5;
16 update fine set amt=fineamt where rollno=mroll;
17 update borrower2 set status='R' where rollno=mroll;
18 elsif days>30 then
19 fineamt:=days*50;
20 update fine set amt=fineamt where rollno=mroll;
21 update borrower2 set status='R' where rollno=mroll;
22 else
23 update borrower2 set status='R' where rollno=mroll;
24 end if;
25 exception
26 when no_data_found then
27 dbms_output.put_line(mroll||'Not found');
28 End;
29 /
Enter value for rollno: 2
old 9: mroll:=&rollno;
new 9: mroll:=2;
Enter value for nameofbook: Circe
old 10: mname:='&nameofbook';
new 10: mname:='Circe';
PL/SQL procedure successfully completed.

SQL> /
Enter value for rollno: 3
old 9: mroll:=&rollno;
new 9: mroll:=3;
Enter value for nameofbook: Nancy Drew
old 10: mname:='&nameofbook';
new 10: mname:='Nancy Drew';

PL/SQL procedure successfully completed.

SQL> /
Enter value for rollno: 4
old 9: mroll:=&rollno;
new 9: mroll:=4;
Enter value for nameofbook: Oliver Twist
old 10: mname:='&nameofbook';
new 10: mname:='Oliver Twist';

PL/SQL procedure successfully completed.

SQL> select * from borrower2;

ROLLNO NAME DATEOFISS


---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------
1 Ishita 05-FEB-24
Harry Potter
R

2 Krish 01-FEB-24
Circe
R

ROLLNO NAME DATEOFISS


---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------

3 Priya 20-JAN-24
Nancy Drew
R

4 Manya 11-JAN-24
Oliver Twist

ROLLNO NAME DATEOFISS


---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------
R

SQL> select * from fine;

ROLLNO DATEOFRET AMT


---------- --------- ----------
1 15-FEB-24
2 15-FEB-24
3 15-FEB-24 130
4 15-FEB-24 1750

Q2)
CREATE TABLE Acc_details(
AccountNo INT PRIMARY KEY,
Branch varchar(10),
AccountStatus varchar(1)
);
CREATE TABLE active_acc_details(
AccountNo INT PRIMARY KEY,
Branch varchar(10)
);
INSERT INTO Acc_details VALUES (1, 'Branch1', 'A');
INSERT INTO Acc_details VALUES (2, 'Branch2', 'A');
INSERT INTO Acc_details VALUES (3, 'Branch1', 'I');
INSERT INTO Acc_details VALUES (4, 'Branch3', 'A');
INSERT INTO Acc_details VALUES (5, 'Branch2', 'I');
INSERT INTO Acc_details VALUES (6, 'Branch1', 'A');
INSERT INTO Acc_details VALUES (7, 'Branch3', 'I');
INSERT INTO Acc_details VALUES (8, 'Branch2', 'A');
INSERT INTO Acc_details VALUES (9, 'Branch1', 'I');
INSERT INTO Acc_details VALUES (10, 'Branch3', 'A');
CREATE OR REPLACE PROCEDURE CheckStatus(
Acc_number IN NUMBER,
Acc_branch IN varchar2 -- Use varchar2 instead of varchar
)
IS
Acc_status varchar2(1); -- Define size for varchar2
BEGIN
SELECT AccountStatus INTO Acc_status FROM Acc_details WHERE AccountNo =
Acc_number AND Branch = Acc_branch;
IF Acc_status = 'A' THEN

INSERT INTO active_acc_details VALUES (Acc_number, Acc_branch);


DBMS_OUTPUT.PUT_LINE('Account with Account No ' || Acc_number || ' is
active.');
ELSIF Acc_status = 'I' THEN
DBMS_OUTPUT.PUT_LINE('Account with Account No ' || Acc_number || ' is
inactive.');
ELSE
DBMS_OUTPUT.PUT_LINE('Account with Account No ' || Acc_number || '
does not exist.');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Account with Account No ' || Acc_number || '
does not exist.');
END;
/

DECLARE
v_account_number Acc_details.AccountNo%TYPE;
v_branch Acc_details.Branch%TYPE;
BEGIN
FOR account_row IN (SELECT AccountNo, Branch FROM Acc_details) LOOP
v_account_number := account_row.AccountNo;
v_branch := account_row.Branch;
CheckStatus(v_account_number, v_branch);
END LOOP;
END;
/

SELECT * FROM active_acc_details;


DROP TABLE Acc_details;
DROP TABLE active_acc_details;

Q3)
CREATE TABLE Stud_Marks (
name VARCHAR2(100) PRIMARY KEY,
total_marks NUMBER
);
CREATE TABLE Result (
Name VARCHAR2(100),
Class VARCHAR2(100),
FOREIGN KEY (Name) REFERENCES Stud_Marks(name)
);
CREATE OR REPLACE PROCEDURE proc_Grade (
marks IN NUMBER,
grade OUT VARCHAR2
)
AS
BEGIN
IF marks <= 1500 AND marks >= 990 THEN
grade := 'Distinction';

ELSIF marks <=989 AND marks >= 900 THEN


grade := 'First Class';
ELSIF marks <= 899 AND marks >= 825 THEN
grade := 'Higher Second Class';
ELSE
grade := 'No Grade';
END IF;
END;
/

DECLARE
v_name VARCHAR2(100);
v_total_marks NUMBER;
v_class VARCHAR2(100);
BEGIN
-- Inserting provided student data
INSERT INTO Stud_Marks (name, total_marks) VALUES ('Ishita', 1200);
INSERT INTO Stud_Marks (name, total_marks) VALUES ('Krish', 1000);
INSERT INTO Stud_Marks (name, total_marks) VALUES ('Meena', 950);
INSERT INTO Stud_Marks (name, total_marks) VALUES ('Ajinkya', 850);
INSERT INTO Stud_Marks (name, total_marks) VALUES ('Veena', 1100);
INSERT INTO Stud_Marks (name, total_marks) VALUES ('Sanjana', 1400);
INSERT INTO Stud_Marks (name, total_marks) VALUES ('Ragini', 800);
FOR rec IN (SELECT name, total_marks FROM Stud_Marks) LOOP
v_name := rec.name;
v_total_marks := rec.total_marks;
proc_Grade(v_total_marks, v_class);
INSERT INTO Result (Name, Class) VALUES (v_name, v_class);
DBMS_OUTPUT.PUT_LINE('Student: ' || v_name || ', Class: ' ||
v_class);
END LOOP;
END;
/
COLUMN Name FORMAT A15
COLUMN Class FORMAT A20
SELECT * FROM RESULT;

drop table result;


drop table stud_marks;

You might also like