Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SET contre SELECT lors de l'affectation de variables ?

Citation, qui résume cet article :

  1. SET est la norme ANSI pour l'affectation de variables, SELECT ne l'est pas.
  2. SET ne peut affecter qu'une seule variable à la fois, SELECT peut effectuer plusieurs affectations à la fois.
  3. En cas d'attribution à partir d'une requête, SET ne peut attribuer qu'une valeur scalaire. Si la requête renvoie plusieurs valeurs/lignes, SET générera une erreur. SELECT attribuera l'une des valeurs à la variable et masquera le fait que plusieurs valeurs ont été renvoyées (vous ne saurez donc probablement jamais pourquoi quelque chose n'allait pas ailleurs - amusez-vous à résoudre celui-ci)
  4. Lors de l'affectation à partir d'une requête, si aucune valeur n'est renvoyée, SET affectera NULL, où SELECT n'effectuera aucune affectation (la variable ne sera donc pas modifiée par rapport à sa valeur précédente)
  5. En ce qui concerne les différences de vitesse - il n'y a pas de différences directes entre SET et SELECT. Cependant, la capacité de SELECT à effectuer plusieurs affectations en une seule fois lui confère un léger avantage en termes de vitesse par rapport à SET.