0% found this document useful (0 votes)
20 views

Dbms Practical 3 (PLSQL Control Structure and Exception Handling)

Uploaded by

kumbharsahil2004
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Dbms Practical 3 (PLSQL Control Structure and Exception Handling)

Uploaded by

kumbharsahil2004
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

CREATE DATABASE library;

USE library;

CREATE TABLE Borrower (


Rollno INT(4),
Name VARCHAR(20),
DateofIssue DATE,
NameofBook VARCHAR(30),
Status VARCHAR(10)
);

INSERT INTO Borrower VALUES (14, 'Ram', '2022-09-19', 'Operating System', 'I');
INSERT INTO Borrower VALUES (27, 'Soham', '2022-07-24', 'Object Oriented
Programming', 'I');
INSERT INTO Borrower VALUES (34, 'Mohan', '2022-06-12', 'Microprocessor', 'I');
INSERT INTO Borrower VALUES (48, 'Om', '2022-04-19', 'Mechanics', 'I');

SELECT * FROM Borrower;

CREATE TABLE Fine (


Rollno INT(4),
Date DATE,
Amount INT(10)
);
DELIMITER //

CREATE PROCEDURE calc_Fine(IN r INT, IN b VARCHAR(30))


BEGIN
DECLARE doi DATE;
DECLARE diff INT;
DECLARE fine_amt INT;
DECLARE no_borrower_found CONDITION FOR SQLSTATE '02000';

DECLARE EXIT HANDLER FOR no_borrower_found


BEGIN
SELECT 'No borrower found with the given Rollno and NameofBook';
END;

SELECT DateofIssue INTO doi


FROM Borrower
WHERE Rollno = r AND NameofBook = b;

SELECT DATEDIFF(CURDATE(), doi) INTO diff;

IF diff > 30 THEN


SET fine_amt = (diff - 30) * 50 + 30 * 5;
ELSEIF diff >= 15 THEN
SET fine_amt = diff * 5;
ELSE
SET fine_amt = 0;
END IF;

IF fine_amt > 0 THEN


INSERT INTO Fine (Rollno, Date, Amount)
VALUES (r, CURDATE(), fine_amt);
END IF;
END //
DELIMITER ;
DELIMITER //

CREATE PROCEDURE submit(IN r INT)


BEGIN

UPDATE Borrower
SET Status = 'R'
WHERE Rollno = r;

DELETE FROM Fine WHERE Rollno = r;


END //

DELIMITER ;
CALL calc_Fine(14, 'Operating System');
CALL calc_Fine(27, 'Object Oriented Programming');
CALL calc_Fine(34, 'Microprocessor');
CALL calc_Fine(48, 'Mechanics');

SELECT * FROM Fine;

CALL submit(14);
CALL submit(27);
CALL submit(48);
CALL submit(34);

SELECT * FROM Fine;


SELECT * FROM Borrower;

You might also like