SET vs SELECT

En T-SQL, SET et SELECT permettent d’assigner des valeurs à des variables. Il existe cependant des différences entre ces deux opérateurs. Voyons ça.

  • SET permet d’assigner une valeur à la fois. SELECT permet d’en assigner plusieurs valeurs d’un coup.
  • ex:

    ...
    set @empName = 'toto'
    select @employeeId = 1, @employeeTitle = 'mr.'
    
    select @empName, @employeeId, @employeeTitle
    

    Affiche
    SET SELECT

  • Lorsqu’il est utilisé avec un SELECT, SET permet d’assigner uniquement une valeur scalaire. Si le SELECT retourne plusieurs valeurs, il y a une erreur. Une des valeurs retournées sera tout de même assignée à la variable.
  • set @employeeId = (SELECT EmployeeID from Employees)
    

    SET SELECT

  • Lorsque le SELECT ne retourne aucune valeur, SET assigne NULL à la variable tandis que SELECT ne modifie pas la variable.
  • set @employeeId = 10
    set @employeeId = (SELECT EmployeeID from Employees WHERE EmployeeID = -1)
    
    select @employeeId --affiche NULL
    
    set  @empName = 'toto'
    select @empName = FirstName FROM dbo.Employees WHERE EmployeeID = -1
    
    select @empName -- affiche toto
    

Voilà. Vous êtes au courant de cette subtilité qui vous évitera bien des bugs dans vos procédures stockées.

source : Stack Overflow

Auteur : Daniel MINKO FASSINOU

Laisser un commentaire




Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.