Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SET contro SELECT quando si assegnano variabili?

Citazione, che riassume da questo articolo:

  1. SET è lo standard ANSI per l'assegnazione delle variabili, SELECT no.
  2. SET può assegnare solo una variabile alla volta, SELECT può eseguire più assegnazioni contemporaneamente.
  3. Se si esegue l'assegnazione da una query, SET può assegnare solo un valore scalare. Se la query restituisce più valori/righe, SET genererà un errore. SELECT assegnerà uno dei valori alla variabile e nasconderà il fatto che sono stati restituiti più valori (quindi probabilmente non sapresti mai perché qualcosa è andato storto altrove - divertiti a risolverlo)
  4. Quando si esegue l'assegnazione da una query, se non viene restituito alcun valore, SET assegnerà NULL, mentre SELECT non eseguirà affatto l'assegnazione (quindi la variabile non verrà modificata dal suo valore precedente)
  5. Per quanto riguarda le differenze di velocità, non ci sono differenze dirette tra SET e SELECT. Tuttavia, la capacità di SELECT di eseguire più incarichi in un colpo gli conferisce un leggero vantaggio in termini di velocità rispetto a SET.