Программирование в Microsoft SQL Server 2000

         

Понятие о переменных


Переменные обозначаются префиксом @; например @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')



Содержание раздела