SELECT @local_variable (Transact-SQL)
Указывает на то, что заданная локальная переменная, созданная при помощи DECLARE **@**local_variable, должна принять значение указанного выражения.
Для назначения переменных рекомендуется использовать SET **@**local_variable вместо SELECT **@**local_variable. Дополнительные сведения см. в разделе SET @local\_variable.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
SELECT { @local_variable = expression } [ ,...n ] [ ; ]
Аргументы
- **@**local_variable
Это объявленная переменная, которой должно быть присвоено значение.
- expression
Любое допустимое выражение. Включает в себя скалярный вложенный запрос.
Замечания
SELECT @local_variable обычно используется для возвращения одиночного значения в переменную. Однако если аргумент expression является именем столбца, может вернуться несколько значений. Если инструкция SELECT возвращает более одного значения, переменной присваивается последнее возвращенное значение.
Если инструкция SELECT не возвращает ни одной строки, переменная сохраняет свое текущее значение. Если аргумент expression является скалярным вложенным запросом, который не возвращает значений, переменная принимает значение NULL.
Одна инструкция SELECT может инициализировать несколько локальных переменных.
Примечание. |
---|
Инструкция SELECT, содержащая назначение переменной, не может быть использована для выполнения операций по получению типичного результирующего набора. |
Примеры
A. Использование SELECT @local\_variable для возвращения одиночного значения
В следующем примере переменной @var1
присвоено значение Generic Name
. Запрос к таблице Store
не возвращает строк, потому что в ней отсутствует значение, указанное для CustomerID
. Переменная сохраняет значение Generic Name
.
USE AdventureWorks ;
GO
DECLARE @var1 nvarchar(30);
SELECT @var1 = 'Generic Name';
SELECT @var1 = Name
FROM Sales.Store
WHERE CustomerID = 1000 ;
SELECT @var1 AS 'Company Name';
Ниже приводится результирующий набор.
Company Name
------------------------------
Generic Name
Б. Неприменение SELECT @local\_variable к результирующим наборам возвращает значение NULL
В следующем примере вложенный запрос используется для присвоения значения @var1
. Так как значение, заданное для CustomerID
, не существует, вложенный запрос не возвращает значение, и переменная принимает значение NULL
.
USE AdventureWorks ;
GO
DECLARE @var1 nvarchar(30)
SELECT @var1 = 'Generic Name'
SELECT @var1 = (SELECT Name
FROM Sales.Store
WHERE CustomerID = 1000)
SELECT @var1 AS 'Company Name' ;
Ниже приводится результирующий набор.
Company Name
----------------------------
NULL
См. также
Справочник
DECLARE @local\_variable (Transact-SQL)
Выражения (Transact-SQL)
SELECT (Transact-SQL)