Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SET versus SELECT ao atribuir variáveis?


Citação, que resume este artigo:
  1. SET é o padrão ANSI para atribuição de variáveis, SELECT não.
  2. SET só pode atribuir uma variável por vez, SELECT pode fazer várias atribuições de uma vez.
  3. Se atribuir a partir de uma consulta, SET só pode atribuir um valor escalar. Se a consulta retornar vários valores/linhas, SET gerará um erro. SELECT atribuirá um dos valores à variável e ocultará o fato de que vários valores foram retornados (então você provavelmente nunca saberia por que algo estava errado em outro lugar - divirta-se solucionando esse problema)
  4. Ao atribuir a partir de uma consulta, se não houver valor retornado, SET atribuirá NULL, onde SELECT não fará a atribuição (portanto, a variável não será alterada de seu valor anterior)
  5. No que diz respeito às diferenças de velocidade - não há diferenças diretas entre SET e SELECT. No entanto, a capacidade do SELECT de fazer várias atribuições de uma só vez oferece uma pequena vantagem de velocidade sobre o SET.