需要在SQL Server中有条件更新存储过程的示例

时间:2011-01-09 07:15:10

标签: sql database stored-procedures

我刚刚开始使用数据库级别并且有两个基本问题

  1. 我有一个通用的UPDATE存储过程,用于更新表的所有列。
  2. 但我需要使其成为条件,其中当参数为NULL时它不会设置。

    用法:我想将此作为单个SP来更新任何列的子集,来自C#的调用者将填写相应的参数值并将其他参数保留为NULL。

    2

    如果是“UPDATE selected records”,我是否需要在存储过程中使用锁定?

    为什么?操作本身是否已锁定且是事务性的?

    当我需要更新所选(条件)记录然后返回更新记录时,我发现同样的问题。

2 个答案:

答案 0 :(得分:2)

如果我已正确理解了这个问题,为什么不能从sql server SP动态构建查询,并使用sp_sqlexecute。因此,在构建查询时,您可以确保只有具有值的列已更新。

这会回答你的问题吗?

答案 1 :(得分:1)

更新表 设置a = = @a为null时的情况,然后是@a结束 WHERE id = @id

OR

EXEC'update table set'+ @update +',其中id ='+ @id

OR

一次有条件地更新一列


对我来说,第一个选项通常是首选的,因为它通常足够有效且你不需要担心字符串转义