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