Self-Learning – видеокурсы и книги по IT

Приветствую Вас на сайте Self-Learning.ru! Сегодня мы с Вами поговорим о том, чем же отличается инструкция THROW от инструкции RAISERROR в языке T-SQL, который используется в Microsoft SQL Server.

Для наглядности мы сформируем итоговую таблицу отличий.

Отличия инструкции THROW от инструкции RAISERROR в языке T-SQL

Инструкции THROW и RAISERROR в языке T-SQL

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

К конструкциям, которые позволяют нам отслеживать и обрабатывать ошибки, можно отнести:

  • TRY..CATCH
  • RAISERROR
  • THROW

Если конструкция TRY…CATCH предназначена для перехвата ошибок в коде, то инструкции RAISERROR и THROW предназначены для создания сообщений об ошибках, т.е. они выполняют примерно одинаковую функцию.

Однако, у многих может возникнуть вопрос, а чем они отличаются? А эти отличия на самом деле есть, и мы их сейчас рассмотрим.

Примечание! Подробно конструкция TRY…CATCH рассматривается на курсе «T-SQL. Уровень 3 – Эксперт».

Функция RAISERROR

RAISERROR – это системная функция, позволяющая создавать сообщение об ошибке и возвращать его как сообщение об ошибке сервера вызывающему приложению.

С помощью RAISERROR мы можем сослаться на уже определенное сообщение, которое находится в системном представлении sys.messages, либо самостоятельно динамически создавать сообщение.

Пример использования RAISERROR

RAISERROR('Возникла ошибка!', 16, 1);

Пример использования RAISERROR в T-SQL

Инструкция THROW

THROW – инструкция, которая вызывает исключение и передает выполнение блоку CATCH конструкции TRY…CATCH.

Пример использования THROW

THROW 51000, 'Возникло исключение!', 1;

Пример использования THROW в T-SQL

Заметка! Чем отличаются функции от хранимых процедур в T-SQL.

Отличия инструкции THROW от RAISERROR

Давайте перейдем к рассмотрению основных отличный инструкции THROW от RAISERROR, а чтобы было более наглядно, сделаем это в виде таблицы.

RAISERRORTHROW
Если передается номер ошибки, то идентификатор этой ошибки должен быть определен в системном представлении sys.messagesВ данном случае номер ошибки не требуется определять в системном представлении sys.messages
Есть параметр, который указывает уровень серьезности ошибкиПараметр для указания уровня серьезности отсутствует. В THROW уровень серьезности всегда равен 16
Если передается текст ошибки, то он может содержать стили форматирования, аналогично формату, используемому в функции printfВ данном случае параметр с текстом ошибки не может принимать форматирование стиля printf
Не учитывает SET XACT_ABORTУчитывает SET XACT_ABORT

Заметка! XACT_ABORT в T-SQL – что это такое и как использовать.

Вот мы с Вами и рассмотрели основные отличия инструкции THROW от RAISERROR.

Обязательно стоит отметить, что в новых приложениях рекомендуется использовать инструкцию THROW вместо RAISERROR.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Мы в соцсетях
Следите за выходом новых статей в наших группах в социальных сетях: Подписывайтесь, и Вы не пропустите выход нового материала!
Теги: #
Понравилась статья? Поделитесь с друзьями:
Share on VK
VK
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Tumblr
Tumblr
Share on Reddit
Reddit
Email this to someone
email

Авторские онлайн-курсы по T-SQL

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх