Я думаю, вы просто забыли включить следующую строку в свой пост:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Ваш код верен, но ошибка / странное поведение mysql заставляет предупреждение появляться, даже если оно было обработано. Вы можете избежать этого, если вы добавите «фиктивный» оператор в конец вашей процедуры, который вызывает таблицу и будет успешным, это очистит предупреждение. (См. http://dev.mysql.com/doc/refman/5.5/ru/show-warnings.html ). В вашем случае:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
после окончания цикла. В MySQL 5.5.13 предупреждение исчезает, в Linux и Windows. Я прокомментировал MySQL Bug 60840 и надеюсь, что они исправит это в будущем ...