Variáveis SQL: Declarar, definir e selecionar variáveis no SQL Server
⚡ Resumo Inteligente
As variáveis do SQL Server são objetos nomeados que atuam como marcadores para um único valor de dados na memória. Uma variável deve ser declarada com a instrução DECLARE antes que um valor possa ser atribuído a ela e reutilizada.

O que é uma variável no SQL Server?
In MS SQL ServerVariáveis são objetos que funcionam como marcadores para um endereço de memória. Uma variável armazena um único valor de dados que você pode ler e reutilizar em um lote ou procedimento.
Tipos de variáveis em SQL: local, global
O MS SQL Server possui dois tipos de variáveis:
- Variável local
- Variável global
No entanto, um usuário só pode criar uma variável local. A figura abaixo explica os dois tipos de variáveis disponíveis no MS SQL Server.
Variável local
- Um usuário declara a variável local.
- Por padrão, o nome de uma variável local começa com @.
- Cada variável local tem escopo limitado ao lote ou procedimento atual dentro de uma determinada sessão.
Variável global
- O sistema mantém a variável global; um usuário não pode declarar uma.
- O nome de uma variável global começa com @@.
- Ele armazena informações relacionadas à sessão.
Como DECLARE uma variável em SQL
Antes de usar qualquer variável em um lote ou procedimento em SQLVocê precisa declará-la. O comando DECLARE cria uma variável que funciona como um marcador para um endereço de memória. Somente após a declaração, a variável poderá ser usada na parte subsequente do lote ou procedimento.
Sintaxe TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Regras:
- A inicialização é opcional durante a declaração.
- Por padrão, DECLARE inicializa a variável com o valor NULL.
- Usar a palavra-chave 'AS' é opcional.
- Para declarar mais de uma variável local, adicione uma vírgula após a primeira definição e, em seguida, forneça o nome da próxima variável. tipo de dados.
Exemplos de declaração de uma variável
Consulta: Com 'AS'
DECLARE @COURSE_ID AS INT;
Consulta: Sem 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Consulta: DECLARE duas variáveis
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Atribuindo um valor à variável SQL
Você pode atribuir um valor a uma variável das três maneiras a seguir:
- Durante a declaração de variáveis usando a palavra-chave DECLARE.
- Usando o comando SET.
- Usando SELECT.
Vamos analisar detalhadamente as três maneiras.
Durante a declaração de variável usando a palavra-chave DECLARE
Sintaxe T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Aqui, após o tipo de dados, você pode usar '=' seguido do valor a ser atribuído.
Inquérito:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Executar a consulta imprime o valor atribuído durante a declaração, conforme mostrado abaixo.
Usando a variável SET em SQL
Às vezes, você deseja manter a declaração e a inicialização separadas. O método `SET` atribui um valor à variável após ela ter sido declarada. Abaixo estão as diferentes maneiras de atribuir valores usando `SET`.
Exemplo: Atribuindo um valor a uma variável usando SET
Sintaxe:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Inquérito:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
A execução do script retorna o valor atribuído com SET, mostrado abaixo.
Exemplo: Atribua um valor a várias variáveis usando SET.
Sintaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Regra: Uma palavra-chave SET pode atribuir um valor a apenas uma variável.
Inquérito:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
As duas instruções PRINT retornam ambos os valores atribuídos, conforme mostrado abaixo.
Exemplo: Atribuindo um valor a uma variável com uma subconsulta escalar usando SET
Sintaxe:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Regras:
- Inclua a consulta entre parênteses.
- A consulta deve ser uma consulta escalar, ou seja, deve retornar apenas uma linha e uma coluna. Caso contrário, a consulta gerará um erro.
- Se a consulta retornar zero linhas, a variável será definida como VAZIA, ou seja, NULA.
Suponha que temos o mesa chamado 'Guru99' com duas colunas, conforme mostrado abaixo. Esta tabela é usada nos exemplos a seguir.
Exemplo 1: Quando a subconsulta retorna uma linha como resultado
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Como a subconsulta retorna uma linha correspondente, a variável recebe esse valor, conforme mostrado abaixo.
Exemplo 2: Quando a subconsulta retorna zero linhas como resultado
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Como a subconsulta não retorna nenhuma linha, o valor da variável é VAZIO, ou seja, NULO, portanto nada é impresso, como mostrado abaixo.
Usando a variável SELECT em SQL
Assim como com o comando SET, você também pode usar o comando SELECT para atribuir valores a variáveis após declará-las com o comando DECLARE. Abaixo estão diferentes maneiras de atribuir um valor usando o comando SELECT.
Exemplo: Atribuindo um valor a uma variável usando SELECT
Sintaxe:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Inquérito:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
A atribuição SELECT imprime o valor, conforme mostrado abaixo.
Exemplo: Atribuindo um valor a múltiplas variáveis usando SELECT
Sintaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Regra: Ao contrário do comando SET, o comando SELECT pode atribuir um valor a várias variáveis separadas por vírgulas.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Ambas as variáveis são atribuídas em uma única instrução SELECT, conforme mostrado abaixo.
Exemplo: Atribuindo um valor a uma variável com uma subconsulta usando SELECT
Sintaxe:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Regras:
- Inclua a consulta entre parênteses.
- A consulta deve ser uma consulta escalar que retorne uma linha e uma coluna. Caso contrário, a consulta gerará um erro.
- Se a consulta retornar zero linhas, então a variável estará VAZIA, ou seja, NULA.
Reconsidere nosso 'GuruMesa de 99 pés.
Exemplo 1: Quando a subconsulta retorna uma linha como resultado
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
A subconsulta retorna uma linha, portanto a variável armazena esse valor, conforme mostrado abaixo.
Exemplo 2: Quando a subconsulta retorna zero linhas como resultado
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Sem nenhuma linha correspondente, a variável permanece VAZIA, ou seja, NULA, como mostrado abaixo.
Exemplo 3: Atribuir um valor a uma variável com uma instrução SELECT regular
Sintaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Regras:
- Diferentemente do comando SET, se a consulta retornar várias linhas, o valor da variável será definido como o valor da última linha.
- Se a consulta retornar zero linhas, a variável será definida como VAZIA, ou seja, NULA.
Consulta 1: A consulta retorna uma linha.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
A única linha correspondente define o valor da variável, conforme mostrado abaixo.
Consulta 2: A consulta retorna várias linhas.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Quando várias linhas correspondem, a variável mantém o valor da última linha, conforme mostrado abaixo.
Consulta 3: A consulta retorna zero linhas.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Quando nenhuma linha corresponde, a variável fica VAZIA, ou seja, NULA, como mostrado abaixo.
Outros exemplos de variáveis SQL
Uma variável declarada também pode ser usada dentro de uma consulta, por exemplo, em uma cláusula WHERE para filtrar linhas.
Inquérito:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
A variável filtra a consulta e retorna a linha correspondente, conforme mostrado abaixo.
Fatos interessantes sobre variáveis do SQL Server!
- Uma variável local pode ser exibida usando o comando PRINT, assim como o comando SELECT.
- O tipo de dados tabela não permite o uso de 'AS' durante a declaração.
- SET está em conformidade com os padrões ANSI, enquanto SELECT não.
- Também é permitido criar uma variável local chamada @. Por exemplo, ela pode ser declarada como:
'DECLARE @@ as VARCHAR (10)'















