![]() |
1
27
创建语句所需的语法是:
如果你还是想坚持到底,在所有的建议之后。 注意:如果省略case语句的else[subject]部分,而不是忽略update,它会将字段设置为空。 |
![]() |
2
6
这是你真正需要的。但是,如果你 如果字段没有更改,则无法更新 ,然后您必须在单独的语句中进行。
|
![]() |
3
6
到目前为止,最好的办法是使用显式if语句:
从性能的角度来看,没有什么比这更好的了。因为SQL可以在查询编译期间看到您只更新主体或主体,或者两者都更新,所以它可以生成适当的计划,例如,当您只更新主体时,它甚至不需要打开(用于更新)针对主体的非聚集索引(当然,如果您有一个)。 从代码质量的角度来看,这是一场灾难,维护起来是一场噩梦。但承认问题是解决问题的80%。)例如,您可以使用代码生成技术来维护此类问题过程。 另一种可行的方法实际上是使用动态SQL,在过程中构造更新,并使用sp_executesql。它有自己的一组问题,就像所有动态SQL一样。有关于动态SQL问题的资源,有解决方法和解决方案,请参见 The Curse and Blessings of Dynamic SQL . |
![]() |
4
1
在我看来你浪费了很多精力。如果检索到这六个值,则将它们显示给用户(在某些用户界面中),并且它们可以更改其中的某个变量号。 点击“保存”按钮-然后每次只更新所有6个字段,从用户输入字段中获取新值。 有些可能没有改变,但那又怎样呢?这样的代码就简单多了。 |
![]() |
5
0
对存储过程参数使用默认值。
然后,您可以这样构造更新:
|
![]() |
6
0
|
![]() |
7
0
我不确定这是不是最好的方法,但也许你可以试试
|
![]() |
8
0
如果您需要在单个存储过程中使用AdamRobinson方法,我强烈建议您使用该方法。 更好的方法是对这些更新中的每一个使用单独的存储过程。 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 6 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 7 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 7 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 7 月前 |