SELECT do proměnné

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