Bolestivě jsem zjistil, že je propastný rozdíl mezi
SELECT @prom = 5 FROM sys.objects WHERE 1 = 0
a
SET @prom = ( SELECT 5 FROM sys.objects WHERE 1 = 0)
První dotaz proměnnou neovlivní. Druhý nastaví dle očekávání hodnotu NULL.
Kompletní příklad.
DECLARE @prom INT = 1 SELECT @prom = 5 FROM sys.objects WHERE 1 = 0 SELECT @prom --vypise 1 SET @prom = ( SELECT 5 FROM sys.objects WHERE 1 = 0) SELECT @prom --vypise NULL