Added queries for assignment A4.

This commit is contained in:
K 2024-09-29 23:00:38 +05:30
parent 0a4c55d09b
commit d3d7cf5c8e
Signed by: notkshitij
GPG Key ID: C5B8BC7530F8F43F

View File

@ -1,75 +1,91 @@
## Creating tables & inserting data
## Creating tables
Student marks:
```sql
CREATE TABLE Stud_Marks(
Roll NUMBER(14),
name VARCHAR(255),
total_marks NUMBER(14),
PRIMARY KEY(Roll)
CREATE TABLE Borrower (
Roll_no NUMBER(15),
Name VARCHAR(255),
DateOfIssue DATE,
NameOfBook VARCHAR(255),
Status VARCHAR(255),
PRIMARY KEY(Roll_no)
);
INSERT INTO Stud_Marks VALUES (1, 'Arora', 1350);
INSERT INTO Stud_Marks VALUES (2, 'Shankar', 979);
INSERT INTO Stud_Marks VALUES (3, 'Lara', 834);
INSERT INTO Stud_Marks VALUES (4, 'Jambo', 667);
INSERT INTO Stud_Marks VALUES (5, 'Tinde', 1400);
CREATE TABLE Fine (
Roll_no NUMBER(15),
DateOfReturn DATE,
Amount NUMBER(15),
FOREIGN KEY(Roll_no) REFERENCES Borrower(Roll_no)
);
```
Result:
## Inserting data
```sql
CREATE TABLE Result(
Roll NUMBER(14),
name VARCHAR(255),
Class VARCHAR(255),
FOREIGN KEY (Roll) REFERENCES Stud_Marks (Roll)
);
INSERT INTO Borrower (Roll_no, Name, DateOfIssue, NameOfBook, Status) values (1, 'Ayush Kalaskar', TO_DATE('2024-07-28','YYYY-MM-DD'), 'DBMS', 'I');
INSERT INTO Borrower (Roll_no, Name, DateOfIssue, NameOfBook, Status) values (2, 'Himanshu Patil', TO_DATE('2024-07-01','YYYY-MM-DD'),'IOT', 'I');
INSERT INTO Borrower (Roll_no, Name, DateOfIssue, NameOfBook, Status) values (3, 'Kshitij', TO_DATE('2024-08-05','YYYY-MM-DD'), 'TOC', 'I');
```
## Procedure
```sql
CREATE OR REPLACE PROCEDURE proc_grade
(rollno in number,
p_roll_no out Stud_Marks.Roll%type,
p_name out Stud_Marks.name%type,
p_total out Stud_Marks.total_marks%type)
AS
BEGIN
SELECT Roll, name, total_marks into p_roll_no, p_name, p_total from Stud_Marks WHERE Roll = rollno;
IF p_total <= 1500 and p_total >= 990
THEN
INSERT INTO Result VALUES (p_roll_no, p_name, 'Distinction');
ELSE IF p_total <= 989 and p_total >= 900
THEN
INSERT INTO Result VALUES (p_roll_no, p_name, 'First Class');
ELSE IF p_total <= 899 and p_total >= 825
THEN
INSERT INTO Result VALUES (p_roll_no, p_name, 'Higher Second Class');
ELSE
INSERT INTO Result VALUES (p_roll_no, p_name, 'FAIL');
END IF;
END IF;
END IF;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('Rollno ' || rollno || ' is not present!!');
END;
/
```
## Calling Procedure:
```sql
DECLARE
rollno number(14);
p_roll_no Stud_Marks.Roll%type;
p_name Stud_Marks.name%type;
p_total_marks Stud_Marks.total_marks%type;
p_nameofbook VARCHAR(255);
p_rollno NUMBER(15) := 1;
p_dateofissue DATE;
currentdate DATE;
noofdays NUMBER(15);
amount NUMBER(15);
nodata EXCEPTION;
BEGIN
rollno := &rollno;
proc_grade(rollno, p_roll_no, p_name, p_total_marks);
p_nameofbook := '&p_nameofbook';
currentdate := SYSDATE;
IF p_rollno <= 0 THEN
RAISE nodata;
END IF;
SELECT DateOfIssue
INTO p_dateofissue
FROM Borrower
WHERE Roll_no = p_rollno AND NameOfBook = p_nameofbook;
SELECT TRUNC(SYSDATE) - p_dateofissue
INTO noofdays
FROM dual;
DBMS_OUTPUT.PUT_LINE('No of days: ' || noofdays);
IF (noofdays > 30) THEN
amount := noofdays * 50;
ELSIF (noofdays >= 15 AND noofdays <= 30) THEN
amount := noofdays * 5;
ELSE
amount := 0;
END IF;
IF amount > 0 THEN
INSERT INTO Fine (Roll_no, DateOfReturn, Amount)
VALUES (p_rollno, SYSDATE, amount);
END IF;
IF amount > 0 THEN
UPDATE Borrower
SET Status = 'R'
WHERE Roll_no = p_rollno;
END IF;
EXCEPTION
WHEN nodata THEN
DBMS_OUTPUT.PUT_LINE('Roll number or book name not found.');
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No entry found for the provided roll number and book name.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
END;
/