5

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

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

3 回答 3

16

在语句SELECT @@ROWCOUNT之后立即使用。DELETE您可以在 MSDN 上阅读更多信息@@ROWCOUNT

@@ROWCOUNT

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

评论

...

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

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

DECLARE CURSOR并将值FETCH设置@@ROWCOUNT为 1。

...

USE, SET <option>, DEALLOCATE CURSOR,等语句CLOSE CURSORBEGIN TRANSACTIONCOMMIT TRANSACTION将值重置ROWCOUNT为 0。

于 2013-01-13T04:32:38.520 回答
2

你也可以SET NOCOUNT OFF

评论

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

于 2013-01-13T04:45:50.903 回答
0

在调试存储过程时,我一般使用下面的这段代码:

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

我在操作之前和之后使用它,例如删除。我将在消息中添加一个数字,以跟踪我在代码中的哪个片段。当您处理具有大量代码行的大型存储过程时,它非常有用。

于 2013-05-23T18:51:12.173 回答