Я рекомендую вам использовать функцию вместо процедуры, если вы хотите, чтобы она возвращала значение. Другой вариант - использовать параметры, если вы хотите, чтобы ваша процедура возвращала одно или несколько значений.
Тем не менее, я удивлен вашими результатами. Если wrong_table_name
не существует, то этот proc должен вернуть true. Что касается обновления t1, это произойдет, если вы используете нетранзакционный механизм хранения, такой как MyISAM, который игнорирует откат.
Я протестировал ваш код в MySQL 5.5.8, и он работал правильно для меня. А именно, он всегда входил в обработчик выхода, когда wrong_table_name
не существовало.