venerdì 24 febbraio 2017

Assegnare variabile con SELECT

Quando si usa l'istruzione SELECT per assegnare un campo ad una variabile (@id), sarà scontato, ma è sempre consigliabile prima inizializzarla.
Nel seguente esempio la select non torna NULL come ci si potrebbe aspettare ma 1!
DECLARE @id INT = 1
SELECT @id = 2 WHERE 1=0
SELECT @id  -- esce 1

Quindi se si vuole sia restituito NULL si dovrà provvedere impostando la variabile a NULL poco prima della SELECT:
DECLARE @id INT = 1
SET @id = NULL
SELECT @id = 2 WHERE 1=0
SELECT @id  -- ora invece esce NULL