Любой объект базы данных должен обладать уникальным именем внутри этой базы. На основе имени происходит обращение к этому объекту. Имена объектов называются идентификаторами. Transact-SQL накладывает ряд ограничений на порядок именования объектов:
· первый символ имени должен быть одним из символов латинского алфавита (A-Z, a-z), либо символом @, # или _, т.е. не допускается использование цифр и прочих специальных символов. Остальная часть имени может включать любые символы алфавита, цифры и некоторые специальные символы;
· общая длина имени обычного объекта не должна превышать 128 символов, для временных объектов – 116;
· внутри имени запрещается использование пробелов, скобок и таких символов, как ~, !, %, ^, & и др.
· имя объекта не должно совпадать с зарезервированным словом и с именем уже существующего объекта;
· если имя объекта содержит пробелы или совпадает с зарезервированным словом, то его необходимо поместить внутрь квадратных скобок [ ].
Замечание: Transact-SQL является CASE-нечувствительным языком, т.е. не различает регистра символов.
Имена локальных переменных должны удовлетворять перечисленным правилам именования объектов и всегда должны начинаться с символа @. Область действия переменной ограничена пакетом операторов или процедурой, в которой она была объявлена.
Синтаксис команды (внутри квадратных скобок в описании синтаксиса располагаются необязательные элементы):
DECLARE @ИмяПеременной ТипДанных [ ,…n]
Пример объявления одной переменной:
DECLARE @sum int
Пример объявления нескольких переменных:
DECLARE @temp int, @count float
Синтаксис команды:
SET @ИмяПеременной = Выражение
Пример присвоения значения:
SET @sum = 0
В версии MS SQL Server 2008 появились следующие нововведения.
· Инициализировать переменную стало можно сразу при объявлении, например:
DECLARE @iCounter int = 0
· Появились операторы +=, –=, *=, /= для краткой формы записи арифметических конструкций.
Группировка двух и более команд в единый блок осуществляется с помощью конструкции:
BEGIN
...
END
Такая группировка используется в условных и циклических конструкциях.
Выполнение той или иной группы команд в зависимости от выполнения или не выполнения некоторого условия реализуется с помощью конструкции:
IF <условие>
Оператор
[ELSE
Оператор ]
При отсутствии команд, выполняемых при несоблюдении условия, ключевое слово ELSE можно не указывать.
Следует отметить особенность проверки значений на NULL (специальный маркер, обозначающий отсутствие информации). Вместо обычного сравнения: IF @myvar = NULL, следует использовать оператор IS: IF @myvar IS NULL.