СОЗДАТЬ ПРОЦЕДУРУ `justifyGroupNum`() НЕ ДЕТЕРМИНИРОВАННЫЙ ОПРЕДЕЛИТЕЛЬ БЕЗОПАСНОСТИ SQL КОММЕНТАРИЙ '' НАЧИНАТЬ /*как запустить: вызовите justifyGroupNum()*/ ОБЪЯВИТЬ p_group_id int; объявить p_num int; объявить stopFlag int; DECLARE имя_курсора CURSOR FOR выберите c_group_id, count(*) как число из `t_group_member` где c_valid в (3,4) группировать по c_group_id; ОБЪЯВИТЬ ОБРАБОТЧИК ПРОДОЛЖЕНИЯ ДЛЯ НЕ НАЙДЕНО установить stopFlag=1; ОТКРЫТЬ имя_курсора; ПОВТОРИТЬ FETCH имя_курсора INTO p_group_id,p_num; начинать обновить t_groupinfo, установить c_member_number=p_num, где c_group_id=p_group_id; конец; ДО тех пор, пока стопфлаг = 1 КОНЕЦ ПОВТОР; ЗАКРЫТЬ имя_курсора; КОНЕЦ; |
Итог:
1. Обратите внимание на настройку обработчика счетчика курсора: DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1
2. Обратите внимание на использование REPEAT и UTILE [условие остановки] END REPEAT, иначе цикл не зациклится;
3. Как ЗАПУСТИТЬ, ввести и выполнить: вызов justifyGroupNum()