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

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

我正在尝试从一个表中删除两个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)中的用户

  1. OPEN TempCursor
  2. WHILE 1=1
  3. BEGIN
  4. FETCH NEXT FROM TempCursor
  5. INTO @Id
  6. IF @@FETCH_STATUS < 0 BREAK
  7. BEGIN TRY
  8. SET XACT_ABORT ON
  9. BEGIN TRAN DeleteTrans
  10. DELETE Users WHERE Id = @Id
  11. COMMIT TRAN DeleteTrans
  12. END TRY
  13. BEGIN CATCH
  14. print @AdviserBusinessId
  15. END CATCH
  16. END
  17. CLOSE TempCursor ;
  18. DEALLOCATE TempCursor ;

暂无答案!

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

相关问题