peshkov
Новичок
Помощь с процедурой
С процедурами начал недавно работать и нужна помощь
Суть моей процедуры следующая, Обновить поле user_id в табличке speaking_list
Запрос который объявлен в процедура
Ну а теперь сам вопрос.
Почему выполнение данной процедуры длиться бесконечно долго?
Где моя ошибка?
С процедурами начал недавно работать и нужна помощь
Суть моей процедуры следующая, Обновить поле user_id в табличке speaking_list
PHP:
CREATE DEFINER = 'root'@'localhost' PROCEDURE `p_UpdateSpeakingList`()
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE v_number_a varchar(10);
DECLARE v_phone_number varchar(10);
DECLARE v_sp_id INT(11);
DECLARE v_id_phone_code INT(11);
DECLARE v_user_id INT(11);
DECLARE cursor_SP CURSOR FOR
SELECT t2.number_a, id_sp, user_id FROM ( SELECT t1.number_a
, t1.id as id_sp
, SUBSTR(number_a,1,3) as phone_code
, SUBSTR(number_a,4,7) as number_phone
FROM speaking_list t1
WHERE 1=1 AND t1.user_id = 0
ORDER BY t1.number_a ASC
) t2
LEFT JOIN phone_code t3 ON phone_code = t3.code
LEFT JOIN number_a t4 ON number_phone = t4.number_a AND t4.number_a_code_id = t3.id;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
OPEN cursor_SP;
FETCH cursor_SP INTO v_number_a, v_sp_id, v_user_id;
WHILE done = 0 DO
UPDATE speaking_list SET `user_id` = v_user_id
WHERE 1 =1 AND `id` = v_sp_id;
END WHILE;
CLOSE cursor_SP;
END;
PHP:
SELECT t2.number_a, id_sp, user_id FROM ( SELECT t1.number_a
, t1.id as id_sp
, SUBSTR(number_a,1,3) as phone_code
, SUBSTR(number_a,4,7) as number_phone
FROM speaking_list t1
WHERE 1=1 AND t1.user_id = 0
ORDER BY t1.number_a ASC
) t2
LEFT JOIN phone_code t3 ON phone_code = t3.code
LEFT JOIN number_a t4 ON number_phone = t4.number_a AND t4.number_a_code_id = t3.id;
Возвращает следующие данные
number_a id_sp user_id
4951000000 10 147
4951111111 1 138
4952222222 2 139
4953333333 3 140
4954444444 4 141
4955555555 5 142
4956666666 6 143
4957777777 7 144
4958888888 8 145
4959999999 9 146
Почему выполнение данной процедуры длиться бесконечно долго?
Где моя ошибка?