J'ai une instruction de mise à jour dans une procédure stockée qui ressemble généralement à ceci:
Update [TABLE_NAME]
Set XYZ=@ABC
Existe-t-il un bon moyen de déclencher l’instruction update si la variable n’est pas nulle ou si la valeur est -1?
Semblable à une question IF NOT EXISTS...INSERT
.
Merci beaucoup.
Utilisez un T-SQL IF
:
IF @ABC IS NOT NULL AND @ABC != -1
UPDATE [TABLE_NAME] SET XYZ=@ABC
Jetez un coup d’œil au MSDN docs .
Une autre approche lorsque vous avez plusieurs mises à jour serait d’utiliser COALESCE:
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = COALESCE(@ABC, [ABC]),
[ABCD] = COALESCE(@ABCD, [ABCD])
Une autre approche est ISNULL ().
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = ISNULL(@ABC, [ABC]),
[ABCD] = ISNULL(@ABCD, [ABCD])
La différence entre ISNULL et COALESCE correspond au type de retour. COALESCE peut également prendre plus de 2 arguments et utiliser le premier qui n’est pas nul. C'est à dire.
select COALESCE(null, null, 1, 'two') --returns 1
select COALESCE(null, null, null, 'two') --returns 'two'