我似乎无法弄清楚如何使用 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
我在操作之前和之后使用它,例如删除。我将在消息中添加一个数字,以跟踪我在代码中的哪个片段。当您处理具有大量代码行的大型存储过程时,它非常有用。