Якщо ви хочете "дострокового виходу" для ситуації, в якій помилки не було, скористайтеся прийнятою відповіддю, опублікованою @piotrm. Найчастіше, однак, ви будете порушені через стан помилки (особливо в процедурі SQL).
Станом на MySQL v5.5 ви можете викинути виняток. Не заперечуючи обробників винятків тощо, які дозволять досягти такого ж результату, але більш чітким і більш гострим чином.
Ось як:
DECLARE CUSTOM_EXCEPTION CONDITION FOR SQLSTATE '45000';
IF <Some Error Condition> THEN
SIGNAL CUSTOM_EXCEPTION
SET MESSAGE_TEXT = 'Your Custom Error Message';
END IF;
Примітка SQLSTATE '45000'
прирівнюється до "Умови виключення, визначеної користувачем". За замовчуванням це створить код помилки 1644
(який має те саме значення). Зауважте, що ви можете кидати інші коди умов або коди помилок, якщо хочете (плюс додаткові дані для обробки винятків).
Щоб дізнатися більше про цю тему, перегляньте:
https://dev.mysql.com/doc/refman/5.5/en/signal.html
Як підняти помилку в рамках функції MySQL
http://www.databasejournal.com/features/mysql/mysql-error-handling-using-the-signal-and-resignal-statements.html
Додаток
Під час перечитування цієї публікації я зрозумів, що я маю щось додатково додати. До MySQL v5.5 існував спосіб емуляції викиду винятку. Це не те саме, але це був аналог: Створіть помилку, викликавши процедуру, яка не існує. Назвіть процедуру ім'ям, яке має сенс, щоб отримати корисний засіб, за допомогою якого можна визначити, у чому проблема. При виникненні помилки ви побачите лінію відмови (залежно від контексту виконання).
Наприклад:
CALL AttemptedToInsertSomethingInvalid;
Зауважте, що під час створення процедури не проводиться перевірка таких дій. Тож, хоч у чомусь схожій на компільованій мові, ви ніколи не можете викликати функцію, якої не було, у такому сценарії він просто не працює під час виконання, що саме в цьому випадку бажано!
IF tablename IS NOT NULL THEN
...;)