SQL-tilldelning av variabel med select utan resultat
2009-06-25 16:08 - Utvecklingstips av Tommy Söderström
Tommy Söderström
Systemutvecklare
Iteam
När man använder en selectfråga för att sätta värden på variabler så finns en fallgrop man får se upp med!
När frågan inte returnerar nån rad så behåller variabeln sitt värde och sätts inte till null vilket man skulle kunna tro utan den ignorerar helt resultatet och gör ingen tilldelning alls.
Exempel 1:
declare @match float
SELECT @match = mv_matchvalue FROM match_values WHERE 1=2
select @match
@match innehåller null som förväntat eftersom det inte finns några såna rader.
Exempel 2:
declare @match float
SET @match = 2
SELECT @match = mv_matchvalue FROM match_values WHERE 1=2
select @match
@match innehåller 2 och och inte null, d.v.s. den tilldelas inte alls.
Utan stöd av den utmärkta debugfunktionen som finns i SQL Server 2008 så hade jag nog felsökt detta fenomen flera timmar!
... och du vet väl att Iteam just nu söker duktiga medarbetare? Läs mer på iteam.se
Andra bloggar om:
SQL,
SQL Server 2008