SELECT @local_variable (Transact-SQL)
Especifica que a variável local especificada criada através de DECLARE @local_variable deve ser definida para a expressão especificada.
Para atribuir variáveis, é recomendável usar SET @local_variableem vez de SELECT @local_variable. Para obter mais informações, consulte SET @local_variable.
Sintaxe
SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n ] [ ; ]
Argumentos
@local_variable
É uma variável declarada para a qual um valor será atribuído.=
Atribui o valor à direita à variável da esquerda.{= | += | -= | *= | /= | %= | &= | ^= | |= }
Operador de atribuição composto:+= Somar e atribuir
-= Subtrair e atribuir
*= Multiplicar e atribuir
/= Dividir e atribuir
%= Módulo e atribuir
&= AND de bit a bit e atribuir
^= XOR de bit a bit e atribuir
|= OR de bit a bit e atribuir
expression
É qualquer expressão válida. Isso inclui uma subconsulta escalar.
Comentários
SELECT @local_variable normalmente é usado para retornar um único valor na variável. No entanto, quando expression é o nome de uma coluna, pode retornar vários valores. Se a instrução SELECT retornar mais de um valor, à variável será atribuído o último valor retornado.
Se a instrução SELECT não retornar nenhuma linha, a variável reterá seu valor atual. Se expression for uma subconsulta escalar que não retorna nenhum valor, a variável será definida como NULL.
Uma instrução SELECT pode inicializar várias variáveis locais.
Observação |
---|
Uma instrução SELECT que contém uma atribuição de variável não pode ser usada também para executar operações típicas de recuperação de conjunto de resultados. |
Exemplos
A. Usando SELECT @ local_variable para retornar um único valor
No exemplo a seguir, a variável @var1 recebe Generic Name com seu valor. A consulta na tabela Store não retorna linhas porque o valor especificado para CustomerID não existe na tabela. A variável retém o valor Generic Name.
USE AdventureWorks2008R2 ;
GO
DECLARE @var1 nvarchar(30);
SELECT @var1 = 'Generic Name';
SELECT @var1 = Name
FROM Sales.Store
WHERE CustomerID = 1000 ;
SELECT @var1 AS 'Company Name';
Aqui está o conjunto de resultados.
Nome da empresa
------------------------------
Nome genérico
B. Usando SELECT @local_variable para nenhum conjunto de resultados retorna nulo
No exemplo a seguir, uma subconsulta é usada para atribuir um valor a @var1. Como o valor solicitado para CustomerID não existe, a subconsulta não retorna valores e a variável é definida como NULL.
USE AdventureWorks2008R2 ;
GO
DECLARE @var1 nvarchar(30)
SELECT @var1 = 'Generic Name'
SELECT @var1 = (SELECT Name
FROM Sales.Store
WHERE CustomerID = 1000)
SELECT @var1 AS 'Company Name' ;
Aqui está o conjunto de resultados.
Nome da empresa
----------------------------
NULL
Consulte também