SELECT (Transact-SQL)SELECT (Transact-SQL)

APLICA-SE A: simSQL Server (a partir do 2008) simBanco de Dados SQL do Azure simSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse noParallel Data Warehouse

Define uma variável local com o valor de uma expressão.Sets a local variable to the value of an expression.

Para atribuir variáveis, recomendamos o uso de SET @local_variable, em vez de SELECT @local_variable.For assigning variables, we recommend that you use SET @local_variable instead of SELECT @local_variable.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

@local_variable@local_variable
É uma variável declarada para a qual um valor será atribuído.Is a declared variable for which a value is to be assigned.

{= | += | -= | *= | /= | %= | &= | ^= | |= }{= | += | -= | *= | /= | %= | &= | ^= | |= }
Atribui o valor à direita à variável da esquerda.Assign the value on the right to the variable on the left.

Operador de atribuição composto:Compound assignment operator:
|operadoroperator |actionaction |
|-----|-----|
| = | Atribui a expressão a seguir à variável.Assigns the expression that follows, to the variable. |
| += | Adicionar e atribuirAdd and assign |
| -= | Subtrair e atribuirSubtract and assign |
| *= | Multiplicar e atribuirMultiply and assign |
| /= | Dividir e atribuirDivide and assign |
| %= | Módulo e atribuirModulo and assign |
| &= | AND bit a bit e atribuirBitwise AND and assign |
| ^= | XOR bit a bit e atribuirBitwise XOR and assign |
| |= | OR bit a bit e atribuirBitwise OR and assign |

expressãoexpression
É qualquer expressão válida.Is any valid expression. Isso inclui uma subconsulta escalar.This includes a scalar subquery.

RemarksRemarks

SELECT @local_variable normalmente é usado para retornar um único valor na variável.SELECT @local_variable is typically used to return a single value into the variable. No entanto, quando expression é o nome de uma coluna, ela pode retornar vários valores.However, when expression is the name of a column, it can return multiple values. Se a instrução SELECT retornar mais de um valor, à variável será atribuído o último valor retornado.If the SELECT statement returns more than one value, the variable is assigned the last value that is returned.

Se a instrução SELECT não retornar nenhuma linha, a variável reterá seu valor atual.If the SELECT statement returns no rows, the variable retains its present value. Se expression for uma subconsulta escalar que não retorna nenhum valor, a variável será definida como NULL.If expression is a scalar subquery that returns no value, the variable is set to NULL.

Uma instrução SELECT pode inicializar várias variáveis locais.One SELECT statement can initialize multiple local variables.

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.A SELECT statement that contains a variable assignment cannot be used to also perform typical result set retrieval operations.

ExemplosExamples

A.A. Usar SELECT @local_variable para retornar um único valorUse SELECT @local_variable to return a single value

No exemplo a seguir, a variável @var1 recebe Generic Name com seu valor.In the following example, the variable @var1 is assigned Generic Name as its value. A consulta na tabela Store não retorna linhas porque o valor especificado para CustomerID não existe na tabela.The query against the Store table returns no rows because the value specified for CustomerID does not exist in the table. A variável retém o valor Generic Name.The variable retains the Generic Name value.

-- Uses AdventureWorks    
  
DECLARE @var1 varchar(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.Here is the result set.

Company Name  
------------------------------  
Generic Name  

B.B. Usar SELECT @local_variable para retornar nuloUse SELECT @local_variable to return null

No exemplo a seguir, uma subconsulta é usada para atribuir um valor a @var1.In the following example, a subquery is used to assign a value to @var1. Como o valor solicitado para CustomerID não existe, a subconsulta não retorna valores e a variável é definida como NULL.Because the value requested for CustomerID does not exist, the subquery returns no value and the variable is set to NULL.

-- Uses AdventureWorks  
  
DECLARE @var1 varchar(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.Here is the result set.

Company Name  
----------------------------  
NULL  

Consulte TambémSee Also

DECLARE @local_variable (Transact-SQL) DECLARE @local_variable (Transact-SQL)
Expressões (Transact-SQL) Expressions (Transact-SQL)
Operadores compostos (Transact-SQL) Compound Operators (Transact-SQL)
SELECT (Transact-SQL)SELECT (Transact-SQL)