Assignment 1
Assignment 1
mysql> DELIMITER ;
mysql> CALL set_class1();
19 rows in set (0.01 sec)
2. Write a stored procedure and make use of cursor to fill the
class of each student.
mysql> UPDATE result SET class = NULL;
Query OK, 19 rows affected (0.01 sec)
Rows matched: 19 Changed: 19 Warnings: 0
mysql> DELIMITER ##
mysql> CREATE PROCEDURE set_class_cursor()
-> BEGIN
-> DECLARE v_finished INT DEFAULT 0;
-> DECLARE v_marks INT DEFAULT 0;
-> DECLARE v_class VARCHAR(20);
-> DECLARE v_id INT;
-> DECLARE marks_cursor CURSOR FOR SELECT rollNumber, total_marks
FROM result;
-> DECLARE CONTINUE HANDLER
-> FOR NOT FOUND SET v_finished = 1;
-> OPEN marks_cursor;
-> get_marks: LOOP
-> FETCH marks_cursor INTO v_id, v_marks;
-> IF v_finished = 1 THEN
-> LEAVE get_marks;
-> END IF;
-> IF v_marks <= 1500 AND v_marks > 990 THEN
-> SET v_class = 'Distinction';
-> END IF;
-> IF v_marks <= 990 AND v_marks > 900 THEN
-> SET v_class = 'First Class';
-> END IF;
-> IF v_marks <= 900 AND v_marks > 825 THEN
-> SET v_class = 'Higher second class';
-> END IF;
-> IF v_marks <= 825 AND v_marks > 600 THEN
-> SET v_class = 'Second class';
-> END IF;
-> IF v_marks <= 600 THEN
-> SET v_class = 'Fail';
-> END IF;
-> UPDATE result SET class = v_class WHERE rollNumber = v_id;
-> END LOOP get_marks;
-> CLOSE marks_cursor;
-> END ##
Query OK, 0 rows affected (0.03 sec)
mysql> DELIMITER ;
mysql> CALL set_class_cursor();
Query OK, 0 rows affected (0.06 sec)