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:

DECLARE @SETVariable INT, @SELECTVariable INT
SET @SETVariable = 1
SELECT @SELECTVariable = 2

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.


4 comentários

Dennes Menezes · 20 de setembro de 2014 às 13:31

Excelente abordagem. Muito clara e sucinta!

jose · 27 de novembro de 2015 às 19:22

o que seria melhor usar

set @variavel = @variavel +1

ou

select @variavel = @variavel +1

???

    Ruberlei · 26 de dezembro de 2015 às 17:10

    Uma opinião particular minha, utilizaria o ‘SET @VARIAVEL = @VARIAVEL + 1’, acho que em um código fica muito melhor.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *