TRY CATCH 用于游标和 While 循环

时间:2021-02-18 15:43:30

标签: sql-server

我正在尝试收集游标中某些数字的列表,并在 while 循环中运行并根据这些数字更新表。如果更新数字会引发错误,我将使用 TRY...CATCH 捕获它并将其记录在不同的表中。然后继续下一个数字。我想计算成功和失败。我需要登录到 2 个表 - LOG_1LOG_2LOG_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

这行得通吗?谢谢

1 个答案:

答案 0 :(得分:0)

你把事情复杂化了。你可以选择简单的逻辑。检查有效条件,然后去更新表并更新 Log1。对于无效条件,请进行更新 Log2。

IF EXISTS(VALID CONDITION)
BEGIN
UPDATE TABLE ... 
UPDATE Log1 ... 
END
ELSE
BEGIN
UPDATE Log2... 
END
相关问题