我似乎无法弄清楚如何使用SQL Server 2008选择以前删除的记录的数量。是这样的吗?
DELETE FROM [table] WHERE [id]=10
SELECT SCOPE_IDENTITY()
答案 0 :(得分:12)
在SELECT @@ROWCOUNT
声明后立即使用DELETE
。你可以read more about @@ROWCOUNT
on MSDN:
@@ROWCOUNT
返回受最后一个语句影响的行数。
说明
...
数据操作语言(DML)语句将
@@ROWCOUNT
值设置为受查询影响的行数,并将该值返回给客户端。 DML语句可能不会发送任何行给客户。
请注意,我说“紧接着”,因为其他语句可以更改@@ROWCOUNT
的值,即使它们不会影响行本身:
DECLARE CURSOR
和FETCH
将@@ROWCOUNT
值设置为1。...
USE
,SET <option>
,DEALLOCATE CURSOR
,CLOSE CURSOR
,BEGIN TRANSACTION
或COMMIT TRANSACTION
等语句会将ROWCOUNT
值重置为0
答案 1 :(得分:2)
答案 2 :(得分:0)
调试存储过程时,我通常使用下面的代码片段:
DELCARE @Msg varchar(30)
...
SELECT @Msg = CAST(@@ROWCOUNT AS VARCHAR(10)) + ' rows affected'
RAISERROR (@Msg, 0, 1) WITH NOWAIT
我在操作之前和之后使用它,就像删除一样。我会在邮件中加上一个数字,以便跟踪我在代码中使用的代码段。当您处理包含大量代码行的大型存储过程时,它非常有用。