Как вставить сообщение об ошибке SQL в таблицу - PullRequest
1 голос
/ 02 апреля 2012

Я хочу сохранить сообщения об ошибках, возникающих при выполнении хранимой процедуры, в другой таблице ошибок.Вот моя примерная процедура, содержащая некоторые сообщения об ошибках.

    DELIMITER $$
    DROP PROCEDURE IF EXISTS `test`$$
    CREATE PROCEDURE `test`()
    BEGIN
        SELECT * FROM emp;

    END $$
    DELIMITER $$;

Когда я вызываю вышеупомянутую процедуру, это дает мне ошибку. Я хочу сохранить этот код ошибки и сообщение в другой таблице как «ошибка».Любые указатели приветствуются.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Стандартный способ справиться с этим в MySQL - объявить HANDLER, чтобы обработать состояние ошибки так, как вы хотите. Это позволяет вам вставить сообщение об ошибке в другую таблицу, если хотите, а затем либо CONTINUE, либо EXIT запущенную процедуру, как требуется.

Вот документация:

http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html

К сожалению, вы не сможете получить доступ к SQLSTATE оператора, вызвавшего ошибку, поэтому этот подход несколько ограничен.

Вот еще один важный вопрос о SO с гораздо более подробной информацией:

Обработка ошибок хранимых процедур MySQL

0 голосов
/ 02 апреля 2012

SQL ERROR означает, что с вашим SQL-запросом что-то не так. Это может (или не может) зависеть от вашей таблицы. Если ошибка TABLE SPECIFIC или QUERY SYNTAX ERROR , то есть если что-то не так с ТОЛЬКО конкретной таблицей или с запросом, то, безусловно, вы можете вставить свои ошибки в стол. Но если что-то с вашим СОЕДИНЕНИЕМ или чем-то еще, вы не можете вставить ошибки в любую таблицу. ВСЕГДА попробуйте зарегистрировать свои ошибки в файле html или txt (текстовом), чтобы вы могли легко получить к нему доступ. Также меньше шансов на провал.

...