Diferenças entre SET e SELECT ao atribuir Variável
Há duas formas de atribuir um valor a uma variável local previamente criado com o comando DECLARE @ declaração LocalVariable, ou seja, usando o SET e as instruções SELECT Para ilustrar:
[source language=”sql”]
DECLARE @SETVariable INT, @SELECTVariable INT
SET @SETVariable = 1
SELECT @SELECTVariable = 2
[/source]
Aqui estão as diferenças entre a SET e SELECT:
Instrução SET
• ANSI padrão para atribuição de variável
• Pode atribuir apenas uma variável de cada vez
• Ao atribuir a partir de uma consulta e a consulta não retorna nenhum resultado, SET irá atribuir um valor nulo para a variável.
• Ao atribuir a partir de uma consulta que retorna mais de um valor, SET irá falhar com um erro.
Instrução SELECT
• Padrão não-ANSI ao atribuir variável.
• Pode atribuir valores para mais de uma variável de cada vez.
• Ao atribuir a partir de uma consulta e a consulta não retorna nenhum resultado, SELECT não vai fazer a tarefa e, portanto, não altera o valor da variável.
• Ao atribuir a partir de uma consulta que retorna mais de um valor, SELECT irá atribuir o último valor retornado pela consulta e ocultar o fato de que a consulta retornou mais de uma linha.
Excelente abordagem. Muito clara e sucinta!
Obrigado pelo feedback!!!
o que seria melhor usar
set @variavel = @variavel +1
ou
select @variavel = @variavel +1
???
Uma opinião particular minha, utilizaria o ‘SET @VARIAVEL = @VARIAVEL + 1’, acho que em um código fica muito melhor.