我有一个SP,我可以使用它来获取定义的行数。如何更改获取的行中列的值?如'已被取出'= 1。
有什么建议吗?
修改 SP看起来像这样
SET ROWCOUNT @numberOfRows
SELECT * FROM tableA where notSent = 1
我想为我获取的所有行更改'notSent'列。这可能吗?
答案 0 :(得分:2)
1)不要在存储过程中使用Select * - 总是专门列出所需的字段,如下所示 - 将field1,2,3等替换为您想要返回的实际字段。
确定 - 修改后的答案:
2)在要选择的列上设置一个标志,并使用一个不会以编程方式设置的值进行更新 - 例如-1 - 然后选择这些记录,然后更新它们以设置所需的最终值。这样做可以避免由于在存储过程执行过程中发生插入而将更新的记录集更新为所选记录的可能性。你也可以通过使用锁来避免这种情况,但下面的方法会更加健康。
UPDATE Table set notSent = -1 WHERE notSent = 0
SELECT ... from Table where notSent = -1
UPDATE Table set notSent = 1 where notSent = -1