我正在尝试收集游标中某些数字的列表,并在 while 循环中运行并根据这些数字更新表。如果更新数字会引发错误,我将使用 TRY...CATCH
捕获它并将其记录在不同的表中。然后继续下一个数字。我想计算成功和失败。我需要登录到 2 个表 - LOG_1
和 LOG_2
。 LOG_2
应该在成功或失败的情况下更新
create procedure NUMBERS as
BEGIN
DECLARE VARIABLES
UPDATE log_1 table
DECLARE CURSOR FOR SELECT ANYTHING
OPEN CURUPD
FETCH NEXT FROM CURUPD INTO VARIABLES
WHILE @@FETCH_STATUS = 0 BEGIN
begin TRY
UPDATE TABLE BASED ON VARIABLES
End TRY
BEGIN CATCH
Update Log_2 Table
SCount = SCount-1;
FCount = Fcount+1;
END CATCH
SCount = SCount+1;
FETCH NEXT FROM CURUPD INTO VARIABLES
END
CLOSE CUR
DEALLOCATE CUR
UPDATE LOG_1;
END
这行得通吗?谢谢
答案 0 :(得分:0)
你把事情复杂化了。你可以选择简单的逻辑。检查有效条件,然后去更新表并更新 Log1。对于无效条件,请进行更新 Log2。
IF EXISTS(VALID CONDITION)
BEGIN
UPDATE TABLE ...
UPDATE Log1 ...
END
ELSE
BEGIN
UPDATE Log2...
END