I have this process stored, I need to make several updates to mark messages as read. The problem is that only 1 update is done and there are messages marked as unread.
CREATE DEFINER='root'@'localhost' PROCEDURE 'ShowMSG'(IN 'P_TO' INT, IN 'P_FROM' INT)
BEGIN
DECLARE v1 INT DEFAULT 0;
DECLARE v2 INT DEFAULT 0;
DECLARE v3 INT DEFAULT 0;
SET v1 := 0;
SET v3 := (SELECT COUNT(MSG_id) FROM tbl_msg INNER JOIN tbl_empleados ON tbl_empleados.EM_id = tbl_msg.MSG_who WHERE MSG_who != P_FROM AND MSG_read = 0);
WHILE v1 < v3 DO
SET v2 := (SELECT MSG_id FROM tbl_msg INNER JOIN tbl_empleados ON tbl_empleados.EM_id = tbl_msg.MSG_who WHERE MSG_who != P_FROM AND MSG_read = 0 LIMIT v1,1);
UPDATE tbl_msg SET MSG_read = 1 WHERE MSG_id = v2;
SET v1 := v1 + 1;
END WHILE;
SELECT MSG_id, MSG_from, MSG_to, MSG_msg, MSG_who, MSG_send FROM tbl_msg WHERE (MSG_to = @P_TO || MSG_to = P_FROM) AND (MSG_from = P_TO || MSG_from = P_FROM);
END