我似乎无法弄清楚如何使用 SQL Server 2008 选择以前删除的记录数。是这样的吗?
DELETE FROM [table] WHERE [id]=10
SELECT SCOPE_IDENTITY()
我似乎无法弄清楚如何使用 SQL Server 2008 选择以前删除的记录数。是这样的吗?
DELETE FROM [table] WHERE [id]=10
SELECT SCOPE_IDENTITY()
在语句SELECT @@ROWCOUNT之后立即使用。DELETE您可以在 MSDN 上阅读更多信息@@ROWCOUNT:
@@ROWCOUNT返回受最后一条语句影响的行数。
评论
...
数据操作语言 (DML) 语句将
@@ROWCOUNT值设置为受查询影响的行数,并将该值返回给客户端。DML 语句可能不会向客户端发送任何行。
请注意,我说“立即之后”是因为其他语句可以更改 的值@@ROWCOUNT,即使它们本身不影响行:
DECLARE CURSOR并将值FETCH设置@@ROWCOUNT为 1。...
USE,SET <option>,DEALLOCATE CURSOR,等语句CLOSE CURSOR,BEGIN TRANSACTION或COMMIT TRANSACTION将值重置ROWCOUNT为 0。
你也可以SET NOCOUNT OFF。
评论
当 SET NOCOUNT 为 ON 时,不返回计数(指示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
在调试存储过程时,我一般使用下面的这段代码:
DELCARE @Msg varchar(30)
...
SELECT @Msg = CAST(@@ROWCOUNT AS VARCHAR(10)) + ' rows affected'
RAISERROR (@Msg, 0, 1) WITH NOWAIT
我在操作之前和之后使用它,例如删除。我将在消息中添加一个数字,以跟踪我在代码中的哪个片段。当您处理具有大量代码行的大型存储过程时,它非常有用。