Comment définir une variable à partir d'une requête SQL ?

Comment définir une variable à partir d’une requête SQL ?


Source : Stack Overflow [sql-server].)

En utilisant SELECT

SELECT @ModelID = m.modelid
  FROM MODELS m
 WHERE m.areaid = 'South Coast'

En utilisant SET

SET @ModelID = (SELECT m.modelid
                  FROM MODELS m
                 WHERE m.areaid = 'South Coast');

Ensuite, vous pouvez utiliser SELECT pour afficher la valeur de @ModelID ou utiliser la variable dans votre code.

SELECT @ModelID

Consultez cette question pour la différence entre l’utilisation de SELECT et SET en TSQL.

Avertissement

Si cette instruction SELECT retourne plusieurs valeurs (ce qui est problématique en soi) :

  • En utilisant SELECT, la variable reçoit la dernière valeur retournée (comme l’a dit womp), sans aucune erreur ni avertissement (cela peut causer des bogues logiques)

  • La requête SET retourne une erreur uniquement si vous NE mettez PAS le point-virgule à la fin de la requête