Assignment 6
Assignment 6
Code:
Q1)
SQL> select * from borrower;
CUST_NAME LOAN_NO
-------------------------------------------------- ----------
Priya 1
Raj 2
Jay 3
Suhani 4
2 Krish 01-FEB-24
Circe
I
3 Priya 20-JAN-24
Nancy Drew
I
4 Manya 11-JAN-24
Oliver Twist
ROLLNO NAME DATEOFISS
---------- -------------------------------------------------- ---------
NAMEOFBOOK
--------------------------------------------------
STATUS
--------------------------------------------------
I
2 Krish 01-FEB-24
Circe
I
3 Priya 20-JAN-24
Nancy Drew
I
4 Manya 11-JAN-24
Oliver Twist
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';
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';
2 Krish 01-FEB-24
Circe
R
3 Priya 20-JAN-24
Nancy Drew
R
4 Manya 11-JAN-24
Oliver Twist
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
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;
/
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';
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;