sql—即使有错误,也要遍历游标中的所有行

vuv7lop3  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(154)

我正在尝试从一个表中删除两个id,其中id“1”无法删除,因为有另一个表引用users表,但id“2”可以删除,因此我希望即使它会给我id“1”的运行时错误,它也应该为“2”成功运行,从表中删除id“2”
但是用这个代码我得到了这个错误
在批处理结束时检测到消息3998,级别16,状态1,行1不可提交事务。事务被回滚。declare@id int declare tempcursor cursor local fast\u forward for select id from users where id in(1,2)对于id在(1,2)中的用户

OPEN TempCursor 

                           WHILE 1=1
                           BEGIN

                           FETCH NEXT FROM TempCursor 
                           INTO @Id

                                          IF @@FETCH_STATUS < 0 BREAK
                                          BEGIN TRY
                                          SET XACT_ABORT ON
                                          BEGIN TRAN DeleteTrans

                                           DELETE Users WHERE Id = @Id             

            COMMIT TRAN DeleteTrans
            END TRY

            BEGIN CATCH
            print @AdviserBusinessId

            END CATCH

            END

           CLOSE TempCursor ;
           DEALLOCATE TempCursor ;

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题