0% found this document useful (0 votes)
24 views2 pages

Dbms Practical 3 (PLSQL Control Structure and Exception Handling)

Uploaded by

kumbharsahil2004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views2 pages

Dbms Practical 3 (PLSQL Control Structure and Exception Handling)

Uploaded by

kumbharsahil2004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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