Spec-Zone .ru
спецификации, руководства, описания, API

E.2. Ограничения, при условии Обрабатывающие

SIGNAL, RESIGNAL, и GET DIAGNOSTICS не допустимы как подготовленные операторы. Например, этот оператор недопустим:

PREPARE stmt1 FROM 'SIGNAL SQLSTATE "02000"';

SQLSTATE значения в class '04' не обрабатываются особенно. Они обрабатываются то же самое как другие исключения.

У стандартного SQL есть стек области диагностики, содержа область диагностики для каждого вложенного контекста выполнения. Стандартный синтаксис SQL включает GET STACKED DIAGNOSTICS для того, чтобы обратиться к сложенным областям. MySQL не поддерживает STACKED ключевое слово, потому что есть единственная область диагностики, содержащая информацию от нового оператора, который записал в это. См. также Раздел 13.6.7.7, "MySQL Diagnostics Area".

В стандартном SQL первое условие касается SQLSTATE значение возвратилось для предыдущего SQL-оператора. В MySQL это не гарантируется, так получить основную ошибку, невозможно сделать этого:

GET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO;

Вместо этого сделайте это:

GET DIAGNOSTICS @cno = NUMBER;GET DIAGNOSTICS CONDITION @cno @errno = MYSQL_ERRNO;