Внимание! Идентифицирующие значения


Переменные

Переменные, параметры и коды возврата

SQL Server предоставляет объекты трех типов для передачи значений в ваш программный (клиентский по отношению к СУБД) код, а также возврата скалярного значения вызывающей серверный код на Transact-SQL программе.

 

Переменные обеспечивают манипулирование данными, их хранение и передачу как внутри процедуры, так и между хранимыми процедурами и функциями. В SQL Server есть два вида переменных: локальные и глобальные. Локальная переменная обозначается одним символом "эт" (@), а глобальная переменная — двумя (@@). Кроме того, локальные переменные вы можете создавать, читать и писать в них, а глобальные переменные можно только читать. В табл. 1 пере­числены некоторые самые популярные глобальные переменные.

 

Таблица 1. Глобальные переменные

Глобальная переменная Описание
@@ERROR Код ошибки последней выполненной инструкции
@@IDENTITY Последнее идентифицирующее значение, вставленное в текущем соединении с SQL Server
@@ROWCOUNT Количество строк, обработанных последней инструкцией
@@TRANCOUNT Количество открытых транзакций в текущем соединении
@@VERSION Версия SQL Server

 

Переменная @@identity содержит последнее идентифицирующее значение, встав­ленное в таблицу или представление в текущем соединении c SQL Server. Если вы вызываете несколько программных кодов, вставляю­щих идентифицирующие значения, последнее вставленное значение всегда содер­жится в переменной @@identity. Например, если вызывается процедура, встав­ляющая строку в таблицу ТаblеА, которая содержит триггер, вставляющий строки в таблицы TableB, TableC и TableD, причем каждая вставка генерирует новое значе­ние идентификации, значение @@identity, которое извлекается следом за вставкой в таблицу ТаblеА, соответствует значению идентификации, вставленному в TableD. Из-за этого ограничения применять @@identity не рекомендуется. Используйте вместо нее функцию scope identity(), которая вернет последнее идентифици­рующее значение, вставленное в пределах текущей инструкции.

 

Конкретная переменная, которая не является входным параметром функции или процедуры, можно определить с помощью инструкции declare, в которой указываете имя и тип данных переменной. У переменной может быть любой тип данных, кроме типов text, ntext и image. Например,

DECLARE @intvariable INT,

@datevariable date

-- В вышеприведенном коде определены 2 переменные:

-- @intvariable – типа int,

-- @datevariable – типа date


 

-- В коде, приведенном ниже, определена табличная --- переменная, состоящая из 2-х столбцов:

-- ID – типа int, Patient – типа VARCHAR(50).

-- Оба столбца не могут быть равны null.

-- Сама табличная переменная хранится в оперативной -- памяти и удаляется при покидании программы -- пределов видимости переменной.

 

DECLARE @tablevar table

(

ID INT not null,

Patient VARCHAR(50) NOT NULL

)