Понятие о переменных
Переменные обозначаются префиксом @; например @MyVariable. Как и временные таблицы, переменные имеют две области действия: локальную и глобальную. Глобальные переменные обозначаются двойным символом @: @@VERSION.
Имеется несколько различий между переменными и временными таблицами. Все глобальные переменные определяются SQL Server; вы не можете определить их самостоятельно. Кроме того, область действия локальных переменных еще уже, чем у локальных таблиц: они доступны только в пределах пакета или процедуры, в которой они объявлены.
Локальные переменные
Локальные переменные создаются с помощью оператора DECLARE, который имеет следующий синтаксис:
DECLARE @локальная_переменная тип_данных
Идентификатор локальная_переменная должен соответствовать обычным правилам, действующим для идентификаторов базы данных; тип_данных может быть любым системным типом данных, исключая text, ntext или image. С помощью одного оператора DECLARE может быть создано несколько локальных переменных. Для этого переменные нужно указывать через запятую:
DECLARE @var1 int, @var2 int
Большинство типов данных являются скалярными (scalar); то есть они содержат одно значение, такое как число или строка. Возможность объявления перемененных с табличным типом данных, является новшеством в SQL Server 2000. Синтаксис для создания переменной табличного типа показан ниже:
DECLARE @локкальная_переменная Table ({определение_таблицы})
В этом примере, определение_таблицы идентично обычному определению CREATE TABLE, за исключением того, что разрешается использование лишь следующих ограничений: PRIMARY KEY, UNIQUE KEY, NULL и CHECK.
Совет. Другим полезным типом данных для переменных является sql_variant. Переменные типа варианты могут содержать любой тип данных. Это позволяет вам назначать различные типы данных одной локальной переменной в ходе выполнения процедуры.
После создания, локальная переменная первоначально имеет значение NULL. Вы можете присвоить переменной значение следующими способами:
- использовать команду SET с указанием константы или переменной:
SET @myCharVariable = 'Hello, World'
- использовать команду SELECT с указанием константы или переменной:
SELECT @myCharVariable = 'Hello, World'
- использовать команду SELECT с указанием другого оператора SELECT:
SELECT @myCharVariable = MAX (OilName) FROM Oils
- использовать команду INSERT INTO с указанием переменной табличного типа:
INSERT INTO @myTableVariable SELECT * FROM Oils
Обратите внимание, что в третьем случае (SELECT с другим SELECT) оператор присвоения (=) замещает второе ключевое слово в SELECT; оно второй раз не повторяется. Последний пример демонстрирует синтаксис INSERT INTO...SELECT команды INSERT INTO. Вы также можете использовать синтаксис INSERT INTO...VALUES:
INSERT INTO @myTableVariable VALUES ('The Value')