Spec-Zone .ru
спецификации, руководства, описания, API
|
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;