gpt4 book ai didi

sql - 使用 IF 语句时返回更改了多少行?

转载 作者:行者123 更新时间:2023-12-04 14:18:56 24 4
gpt4 key购买 nike

我正在 SQL 中运行一些更新语句,我想返回一个审计表有多少行受到了影响。现在我明白(并看过示例)@@ROWCOUNT 可用于执行此操作。问题是我正在使用带有 IF 语句的更新语句。

BEGIN TRANSACTION
WHILE 1=1
BEGIN
BEGIN TRANSACTION
--update a 1000 rows at a time
UPDATE TOP (1000) table1
SET flag = 1,
WHERE ID IN (SELECT ID FROM #list)

IF @@ROWCOUNT = 0 -- terminating condition
BEGIN
COMMIT TRANSACTION
BREAK
END

COMMIT TRANSACTION
WAITFOR DELAY '00:00:01';
END
--COMMIT TRANSACTION
ROLLBACK TRANSACTION
GO

现在我想使用类似下面的东西。

INSERT INTO @Audit
SELECT 'table1', @@ROWCOUNT

但是无论我把它放在更新的什么地方,它总是返回 0。我已经尝试将它重新分配给一个不同的变量,但仍然没有任何乐趣。

关于此的任何指示都会很棒。

如果需要更多信息,请询问:)

最佳答案

使用临时变量存储@@ROWCOUNT 值。 IF行测试后,该值设置为0。

DECLARE @MY_ROW_CNT AS INT;   
BEGIN
BEGIN TRANSACTION
--update a 1000 rows at a time
UPDATE TOP (1000) table1
SET flag = 1,
WHERE ID IN (SELECT ID FROM #list)

SET @MY_ROW_CNT = @@ROWCOUNT;


IF @MY_ROW_CNT = 0 -- terminating condition
BEGIN
COMMIT TRANSACTION
BREAK
END

INSERT INTO @Audit
SELECT 'table1', @MY_ROW_CNT;

COMMIT TRANSACTION
WAITFOR DELAY '00:00:01';
END

关于sql - 使用 IF 语句时返回更改了多少行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53045060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com