web-dev-qa-db-fra.com

Procédure stockée SQL: Si la variable n'est pas nulle, instruction de mise à jour

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.

21
Jake

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 .

41
James Hill

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])
25
Adam Caviness

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'
0
Thomas Hansen