Если вам нужен «ранний выход» в ситуации, когда ошибки не было, используйте принятый ответ, отправленный @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
...;)