Опубликован: 02.02.2007 | Доступ: свободный | Студентов: 2374 / 243 | Оценка: 4.10 / 3.86 | Длительность: 26:44:00
Урок 24:

Программные объекты

< Урок 23 || Урок 24: 123456 || Урок 25 >

Переменные

Несмотря на то, что временные таблицы в некоторых ситуациях очень полезны, при написании программ все же сложно обойтись без переменных, которые являются программными объектами, используемыми для временного хранения значений.

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

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

Глобальные переменные

Глобальные переменные обозначаются двойным символом @ (@@VERSION) и предоставляются программой SQL Server. Они не могут создаваться пользователем. Большинство глобальных переменных предоставляет информацию о текущем статусе SQL Server. Они все представлены в панели Object Browser в папке Common Functions.

Переменные конфигурирования

Наиболее часто используемые переменные конфигурирования приведены в таблице 25.1. Они предоставляют информацию о текущих установках различных свойств и параметров SQL Server.

Таблица 25.1. Переменные конфигурирования
Переменная Значение
@@CONNECTIONS Число соединений или попыток соединения с момента последнего запуска сервера.
@@DATEFIRST Возвращает число, обозначающее день недели (Monday=1, Sunday=7).
@@DBTS Последнее значение колонки с отметкой времени, вставленной в базу данных.
@@LANGID Идентификатор локального языка, использующегося в данный момент.
@@LANGUAGE Название текущего языка.
@@OPTIONS Возвращает значение текущей опции SET.
@@SERVERNAME Имя локального сервера.
@@VERSION Дата, версия и тип процессора текущей инсталляции.

Статистические переменные

Статистические переменные предоставляют информацию о процессах, выполненных SQL Server с момента последнего запуска. Основные переменные показаны в таблице 25.2.

Таблица 25.2. Статические переменные
Переменная Значение
@@CPU_BUSY Время, потраченное процессором на работу с момента последнего запуска сервера.
@@IDLE Время, бездействия SQL Server с момента последнего запуска сервера.
@@IO_BUSY Время, которое потратил SQL Server на выполнение операций ввода и вывода с момента последнего запуска сервера.
@@TOTAL_ERRORS Число ошибок чтения/записи диска с момента последнего запуска сервера.
@@TOTAL_READ Число выполненных сервером операций чтения с диска с момента последнего запуска сервера.
@@TOTAL_WRITE Число выполненных сервером операций записи на диск с момента последнего запуска сервера.

Системные переменные

Системные переменные показаны в таблице 25.3. Они предоставляют информацию о последних операциях с таблицами, выполненных сервером.

Таблица 25.3. Системные переменные
Переменная Значение
@@IDENTITY Последнее значение идентификационной колонки, вставленной в базу данных.
@@ROWCOUNT Количество строк, подвергшихся воздействию последнего оператора.
< Урок 23 || Урок 24: 123456 || Урок 25 >
Инна Грушецкая
Инна Грушецкая
Сергей Чесноков
Сергей Чесноков