Данную конструкцию можно использовать для обработки исключительных ситуаций. Впервые это конструкция появилась в MS SQL Server 2005.
Блок TRY/CATCH в MS SQL Server работает также как и в других языках программирования. Используется следующий синтаксис:
BEGIN TRY
{ <выражения SQL> }
END TRY
BEGIN CATCH
{ <выражения SQL> }
END CATCH [ ; ]
В блоке BEGIN TRY... END TRY выполняются потенциально опасные команды, если при этом произойдет ошибка уровня 11-19, то выполнение будет передано в блок CATCH.
Уровни ошибок:
· 1–10 Информационные сообщения. Например, обнаружение NULL значений при выполнении агрегатных функций. Так как управление в блок CATCH данные ошибки не передают, то для получения информации об ошибки можно использовать функцию @@ERROR.
· 11–19 Относительно серьезные ошибки. Например, нарушение ограничений внешнего ключа.
· 20–25 Очень серьезные ошибки. Это ошибки на уровне системы, поэтому в коде нельзя узнать о ее возникновении. Такие ошибки разрывают текущее соединение и прерывают выполнение команд.
Существует два вида комментариев:
· однострочные – в этом случае игнорируется текст справа от символов комментария: -- (двойной дефис);
· многострочные – игнорируется текст, записанный между двумя парами символов: /* … */.
MS SQL Server имеет ряд встроенных функций для облегчения и ускорения обработки данных. Различают три типа функций:
· функции наборов записей – результатом выполнения является объект, который может быть использован как таблица данных;
· агрегатные функции – результатом является единственное значение заданного атрибута из некоторого множества записей;
· скалярные функции – результатом также является одно значение из строго определенного набора аргументов.
Выделяют следующие категории скалярных функций – математические, строковые, для работы с датами, конфигурационные и системные. Рассмотрим каждую категорию.
Большинство математических функций возвращают результат того же типа, что и исходные значения. Например, при переводе величины угла из градусов в радианы в случае Radians(90) результат равен 1, что неверно, так как в качестве аргумента функции использовано целое число. Правильная запись: Radians (90.0).
Abs (выражение) – вычисление абсолютного значения выражения. Можно использовать как целочисленные, так и нецелочисленные величины.
IsNumeric (выражение) – проверка, имеет ли указанное выражение числовой тип данных. Результат равен 1, если выражение имеет числовой тип, иначе – 0.
Rand () – возвращает случайное значение на основе системного времени в диапазоне от 0 до 1.
Floor (выражение) – округление указанного значения до ближайшего минимального целого числа.