SELECT @local_variable (Transact-SQL)

Указывает на то, что заданной локальной переменной, созданной при помощи инструкции DECLARE @local\_variable, должно быть присвоено значение указанного выражения.

Для присваивания переменным значений рекомендуется использовать инструкцию SET @local\_variable вместо SELECT @local\_variable. Дополнительные сведения см. в разделе SET @local\_variable.

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n ] [ ; ]

Аргументы

  • @local\_variable
    Это объявленная переменная, которой должно быть присвоено значение.

  • =
    Присвоить значение справа переменной слева.

  • {= | += | -= | *= | /= | %= | &= | ^= | |= }
    Составной оператор присваивания:

    += сложить и присвоить

    -= вычесть и присвоить

    *= умножить и присвоить

    /= разделить и присвоить

    %= получить остаток от деления и присвоить

    &= выполнить побитовое И и присвоить

    = выполнить побитовое исключающее ИЛИ и присвоить

    = выполнить побитовое ИЛИ и присвоить

  • expression
    Любое допустимое выражение. В их число также входит скалярный вложенный запрос.

Замечания

SELECT @local\_variable обычно используется для возвращения одиночного значения в переменную. Однако, если аргумент expression является именем столбца, может вернуться несколько значений. Если инструкция SELECT возвращает более одного значения, переменной присваивается последнее возвращенное значение.

Если инструкция SELECT не возвращает ни одной строки, переменная сохраняет свое текущее значение. Если аргумент expression является скалярным вложенным запросом, который не возвращает значений, переменная принимает значение NULL.

Одна инструкция SELECT может инициализировать несколько локальных переменных.

Примечание

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

Примеры

А.Использование SELECT @local\_variable для возвращения одиночного значения

В следующем примере переменной @var1 присвоено значение Generic Name. Запрос к таблице Store не возвращает строк, потому что в ней отсутствует значение, указанное для CustomerID. Переменная сохраняет значение Generic Name.

USE AdventureWorks2012 ;       
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 AdventureWorks2012 ; 
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)