首页 > 解决方案 > 其中一个 cloumns 的 SQL 存储过程条件更新

问题描述

update我的 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

我想将其更改为仅在 @flag 为 1 时更新 colD。在不影响 SP 性能的情况下,最好和最有效的方法是什么?

标签: sql-serverstored-procedures

解决方案


似乎最简单的方法是使用CASE表达式:

mt.colD = CASE @Flag WHEN 1 THEN GETUTCDATE() ELSE mt.ColD END

推荐阅读