0% found this document useful (0 votes)
48 views6 pages

Lab 9 Stored Procedures

The document contains 4 sections that create stored procedures in MySQL. The first section creates a procedure to increase employee salaries by 10,000. The second section creates a procedure to update a department's total salary when a new employee is hired. The third section creates a procedure to calculate student marks totals, percentages, and grades. The fourth section creates a procedure to generate login IDs using user names and institutes from a database table.
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)
48 views6 pages

Lab 9 Stored Procedures

The document contains 4 sections that create stored procedures in MySQL. The first section creates a procedure to increase employee salaries by 10,000. The second section creates a procedure to update a department's total salary when a new employee is hired. The third section creates a procedure to calculate student marks totals, percentages, and grades. The fourth section creates a procedure to generate login IDs using user names and institutes from a database table.
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/ 6

Lab 9

B. Avinash
2022BCS0227
1. Create a procedure to give a raise to all employees by 10,000
where the employee salary is not null

CREATE TABLE EMPLOYEESS (ID INT PRIMARY KEY, NAME


VARCHAR(20) ,
SUPERID INT , BDATE DATE , SALARY DECIMAL(7,2), DNO INT);
INSERT INTO EMPLOYEESS ( ID,NAME , SUPERID , SALARY,
BDATE, DNO) VALUES (
1,'JOHN',3,1000-0, "1960-01-01",1),(2, 'MARY',3, 50000,"1964-12-
01",3), (3, 'BOB', NULL ,
80000,"1974-02-07",3), (4,'TOM',1,50000,"1978-01-17",2),
(5, 'BILL' , NULL,NULL ,"1985-01-20",1),(6,"LUCY",NULL,90000,"1981-
01-
01",1),(7,"GEORGE",NULL,45000,"1971-11-11",NULL);
SELECT * FROM EMPLOYEESS;

DELIMITER //
CREATE PROCEDURE SALL()
BEGIN
DECLARE EMP_ID INT DEFAULT 0;
DECLARE EMP_SAL DECIMAL(10,2) DEFAULT 0.00;
DECLARE CURSOR_I CURSOR FOR SELECT ID, SALARY FROM
EMPLOYEESS;
OPEN CURSOR_I;
FETCH CURSOR_I INTO EMP_ID, EMP_SAL;
UPDATE EMPLOYEESS SET SALARY = SALARY + 10000 WHERE
EMP_SAL IS NOT
NULL;
CLOSE CURSOR_I;
END //
DELIMITER ;
CALL SALL();
SELECT * FROM EMPLOYEESS;
Output:

2. Create a stored procedure to update the total salary of a


department by 90,000 when a new employee is hired in the
department. The employee salary should be updated if its old value
is not null.
CREATE TABLE EMPLOYEES(ID INT PRIMARY KEY,NAME
VARCHAR(10),SUPERID
INT,SALARY INT,BDATE DATE,DNO INT);
INSERT INTO EMPLOYEES VALUES(1,"JOHN",3,100000,"1960-01-
01",1);
INSERT INTO EMPLOYEES VALUES(2,"MARY",3,50000,"1964-12-
01",3);
INSERT INTO EMPLOYEES VALUES(3,"BOB",NULL,80000,"1974-02-
07",3);
INSERT INTO EMPLOYEES VALUES(4,"TOM",1,50000,"1970-01-
17",2);
INSERT INTO EMPLOYEES VALUES(5,"BILL",NULL,NULL,"1985-01-
20",1);
SELECT * FROM EMPLOYEES;
DELIMITER //
CREATE PROCEDURE UpdateDepartmentSalary()
BEGIN
DECLARE salary_increase DECIMAL(10, 2);
DECLARE counti INT;
SELECT COUNT(*) INTO counti FROM EMPLOYEES WHERE
SALARY IS NOT NULL;
SET salary_increase = 90000/counti;
UPDATE EMPLOYEES
SET SALARY = SALARY + salary_increase
WHERE SALARY IS NOT NULL;
END;
//
DELIMITER ;
CALL UpdateDepartmentSalary();
SELECT * FROM EMPLOYEES;

3. Create a table student_marks with 10 columns (Student_id,


Name, Sub1,Sub2, Sub3, Sub4, Sub5, Total, Perc, and Grade).
Initially, the student_marks table should contain 4 rows and there
should be data only in STUDENT_ID and NAME columns. Create a
stored procedure to calculate Total, Perc, and Grade and update
student_marks table whenever the subject marks are entered. The
criterion for calculating Total, Perc, and Grade is given below:
Total Marks (will be stored in TOTAL column) : TOTAL = SUB1 +
SUB2 + SUB3 +SUB4 + SUB5
Percentage of Marks (will be stored in PER_MARKS column) :
PER_MARKS =(TOTAL)/5
Grade (will be stored GRADE column) : - If PER_MARKS >= 90 ->
'EXCELLENT' – If PER_MARKS >= 75 AND PER_MARKS < 90 ->
'VERY GOOD' - If PER_MARKS >= 60 AND PER_MARKS < 75 ->
'GOOD' - If PER_MARKS >= 40 AND PER_MARKS < 60 ->
'AVERAGE' - If PER_MARKS 'NOT PROMOTED'
CREATE TABLE STUDENT_MARKS(STUDENT_ID INT PRIMARY
KEY,NAME VARCHAR(10),SUB1 INT,SUB2 INT,SUB3 INT,SUB4
INT,SUB5 INT,TOTAL INT,PERC DECIMAL(4,2),GRADE
VARCHAR(20));
INSERT INTO STUDENT_MARKS (STUDENT_ID,NAME)
VALUES(1,"HARI");
INSERT INTO STUDENT_MARKS (STUDENT_ID,NAME)
VALUES(2,"ABEL");
INSERT INTO STUDENT_MARKS (STUDENT_ID,NAME)
VALUES(3,"VARUN");
INSERT INTO STUDENT_MARKS (STUDENT_ID,NAME)
VALUES(4,"HARSH");
SELECT * FROM STUDENT_MARKS;

INSERT INTO STUDENT_MARKS VALUES(1,"HARI",20,30,40,50,60,null,null,null);


INSERT INTO STUDENT_MARKS VALUES(2,"ABEL",10,10,10,10,10,null,null,null);
INSERT INTO STUDENT_MARKS VALUES(3,"VARUN",30,90,40,67,43,null,null,null);
INSERT INTO STUDENT_MARKS VALUES(4,"HARSH",66,89,92,100,98,null,null,null);
DELIMITER //
CREATE PROCEDURE CalculateStudentMarks()
BEGIN
UPDATE student_marks AS sm
SET sm.Total = sm.Sub1 + sm.Sub2 + sm.Sub3 + sm.Sub4 + sm.Sub5,
sm.Perc = (sm.Sub1 + sm.Sub2 + sm.Sub3 + sm.Sub4 + sm.Sub5) / 5,
sm.Grade = CASE
WHEN (sm.Sub1 + sm.Sub2 + sm.Sub3 + sm.Sub4 + sm.Sub5) / 5 >= 90 THEN
'EXCELLENT'
WHEN (sm.Sub1 + sm.Sub2 + sm.Sub3 + sm.Sub4 + sm.Sub5) / 5 >= 75 THEN
'VERY GOOD'
WHEN (sm.Sub1 + sm.Sub2 + sm.Sub3 + sm.Sub4 + sm.Sub5) / 5 >= 60 THEN
'GOOD'
WHEN (sm.Sub1 + sm.Sub2 + sm.Sub3 + sm.Sub4 + sm.Sub5) / 5 >= 40 THEN
'AVERAGE'
ELSE 'NOT PROMOTED'
END
WHERE sm.Total IS NULL;
END;
//
DELIMITER ;
CALL CalculateStudentMarks();
SELECT * FROM STUDENT_MARKS;

Output:

4. Write a stored procedure "ÜSER_LOGINS" to create login id for


user based on user first name and institute name in "USERS" table.
The pattern of the login id should be "@.in". The details of the
fields are as given below
(i) USER_ID (integer type) (ii) FIRST_NAME (character data type of
length 20) (iii) INST_NAME (character data type of length 20) (iv)
LOGIN_ID (character data type of length 50)
CREATE TABLE INSTIT (USER_ID INT,FIRST_NAME VARCHAR(20),
INST_NAME VARCHAR(20),LOGIN_ID VARCHAR(50) );
INSERT INTO INSTIT(USER_ID,FIRST_NAME,INST_NAME) VALUES
(201,"ABEL","IIITK"),(202,"HARI","IIITK"),(203,"BHANU","IIITK"),(204,"ADITYA","IIT
M"),(205,"DE
V","IITB");
SELECT * FROM INSTIT;

DELIMITER //
CREATE PROCEDURE MAKE_LOGIN()
BEGIN
UPDATE INSTIT AS ii SET
LOGIN_ID = CONCAT(ii.FIRST_NAME,'@',ii.INST_NAME,'.ac.in');
END //
DELIMITER ;
CALL MAKE_LOGIN();
SELECT * FROM INSTIT;

Output:

You might also like