Проблема в том, что оператор может сгенерить несколько ошибок и предупреждений, но перехвачено будет только что-то одно. С багой можно столкнуться при обработке MySQL error code 1329 (он же SQLSTATE 02000, он же NOT FOUND) при чтении курсора или выполнения SELECT INTO. Несмотря на перехват ошибки с помощью HANDLER, из процедуры может вернуться warning и навести шороху на клиента.
Бага известна с год, но исправлена она в 5.6.3, а более ранние версии по прежнему содержат ошибку. Оригинальное решение, учитывая, что 5.6 не выпускали в community editon.
В официальной документации предлагается затереть ошибку дополнительным запросом с гарантированным FOUND.
http://dev.mysql.com/doc/refman/5.5/en/condition-handling.htmlНечто вроде:
DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGIN
-- clear warning (before MySQL 5.6.3)
DECLARE dummy INT;
SELECT 1 INTO dummy FROM (SELECT 1) AS t;
-- далее код обработчика
END;
Может кому пригодится.