Reputation: 1794
I have this update
statement in my SP:
ALTER PROCEDURE [dbo].[mySP]
@ID INT
, @valA NVARCHAR(500)
, @valB NVARCHAR(500)
, @valC NVARCHAR(500)
, @flag BIT = 0
UPDATE mt
SET mt.colA = @valA,
mt.colB = @valB,
mt.colC = @valC,
mt.colD = GETUTCDATE()
FROM dbo.mytable mt
WHERE mt.ID = @ID
I want to change it to update colD only if @flag is 1. What would be the best and efficient way without impacting the performance of the SP much?
Upvotes: 0
Views: 45
Reputation: 2403
Try this:
ALTER PROCEDURE [dbo].[mySP]
@ID INT
, @valA NVARCHAR(500)
, @valB NVARCHAR(500)
, @valC NVARCHAR(500)
, @flag BIT = 0
UPDATE mt
SET mt.colA = @valA,
mt.colB = @valB,
mt.colC = @valC,
mt.colD = case when @flag = 1 then GETUTCDATE() else mt.colD END
FROM dbo.mytable mt
WHERE mt.ID = @ID
Upvotes: 1
Reputation: 96015
Would seem the easiest way would be to use a CASE
expression:
mt.colD = CASE @Flag WHEN 1 THEN GETUTCDATE() ELSE mt.ColD END
Upvotes: 4