使用t-SQL选择已删除记录的数量

时间:2013-01-13 04:30:43

标签: sql sql-server sql-server-2008

我似乎无法弄清楚如何使用SQL Server 2008选择以前删除的记录的数量。是这样的吗?

DELETE FROM [table] WHERE [id]=10
SELECT SCOPE_IDENTITY()

3 个答案:

答案 0 :(得分:12)

SELECT @@ROWCOUNT声明后立即使用DELETE。你可以read more about @@ROWCOUNT on MSDN

  

@@ROWCOUNT

     

返回受最后一个语句影响的行数。

     

说明

     

...

     

数据操作语言(DML)语句将@@ROWCOUNT值设置为受查询影响的行数,并将该值返回给客户端。 DML语句可能不会发送任何行给客户。

请注意,我说“紧接着”,因为其他语句可以更改@@ROWCOUNT的值,即使它们不会影响行本身:

  

DECLARE CURSORFETCH@@ROWCOUNT值设置为1。

     

...

     

USESET <option>DEALLOCATE CURSORCLOSE CURSORBEGIN TRANSACTIONCOMMIT TRANSACTION等语句会将ROWCOUNT值重置为0

答案 1 :(得分:2)

您也可以SET NOCOUNT OFF

说明

当SET NOCOUNT为ON时,不返回计数(表示受Transact-SQL语句影响的行数)。当SET NOCOUNT为OFF时,返回计数。

答案 2 :(得分:0)

调试存储过程时,我通常使用下面的代码片段:

DELCARE @Msg varchar(30)
...
SELECT @Msg = CAST(@@ROWCOUNT AS VARCHAR(10)) + ' rows affected'
RAISERROR (@Msg, 0, 1) WITH NOWAIT

我在操作之前和之后使用它,就像删除一样。我会在邮件中加上一个数字,以便跟踪我在代码中使用的代码段。当您处理包含大量代码行的大型存储过程时,它非常有用。