Для обработки ошибок в T-SQL применяется конструкция TRY...CATCH. Она имеет следующий формальный синтаксис:
1
2
3
4
5
6
| BEGIN TRY инструкции END TRY BEGIN CATCH инструкции END CATCH |
Между выражениями
BEGIN TRY
и END TRY
помещаются инструкции, которые потенциально могут вызвать ошибку, например, какой-нибудь запрос. И если в этом блоке TRY возникнет ошибка, то управление передается в блок CATCH, где можно обработать ошибку.
В блоке CATCH для обаботки ошибки мы можем использовать ряд функций:
- ERROR_NUMBER(): возвращает номер ошибки
- ERROR_MESSAGE(): возвращает сообщение об ошибке
- ERROR_SEVERITY(): возвращает степень серьезности ошибки. Степень серьезности представляет числовое значение. И если оно равно 10 и меньше, то такая ошибка рассматривается как предупреждение и не обрабатывается конструкцией TRY...CATCH. Если же это значение равно 20 и выше, то такая ошибка приводит к закрытию подключения к базе данных, если она не обрабатывается конструкцией TRY...CATCH.
- ERROR_STATE(): возвращает состояние ошибки
Например, добавим в таблицу данные, которые не соответствуют ограничениям столбцов:
1
2
3
4
5
6
7
8
9
| CREATE TABLE Accounts (FirstName NVARCHAR NOT NULL , Age INT NOT NULL ) BEGIN TRY INSERT INTO Accounts VALUES ( NULL , NULL ) PRINT 'Данные успешно добавлены!' END TRY BEGIN CATCH PRINT 'Error ' + CONVERT ( VARCHAR , ERROR_NUMBER()) + ':' + ERROR_MESSAGE() END CATCH |
В данном случае для столбцов таблицы вставляются недопустимые данные - значения NULL, поэтому обработка программы перейдет к блоку CATCH:
Комментариев нет:
Отправить комментарий