sql-server - 其中一个 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 性能的情况下,最好和最有效的方法是什么?
解决方案
似乎最简单的方法是使用CASE
表达式:
mt.colD = CASE @Flag WHEN 1 THEN GETUTCDATE() ELSE mt.ColD END
推荐阅读
- list - 循环中的大列表错误以构建数据框 - python
- machine-learning - 使用 SGD 优化最大化损失目标
- python - 如何使用缓存加速 Django 中的堆叠查询
- groovy - 用于匹配地图中的值的 Groovy 模式
- c++ - 这是 C++ 中 gRPC 异步服务器中多线程 RPC 处理程序的有效方法吗?
- flutter - Android Studio 在新 MacBook Pro M1 Max 上运行缓慢
- excel - 从保存在特定文件夹中的多个 Excel 文件中按名称复制列并将其保存在 csv 中
- sql-server - SSRS - 如何防止 SSRS 向订阅模块生成空报告
- x86-64 - 全局不可见的加载和存储内存操作
- jquery - 如何在单击 jQuery datepicker 时停止将输入滚动到顶部?