SQL中使用Cursor进行错误处理

时间:2012-01-30 14:17:39

标签: sql-server sql-server-2008

我有游标,如果记录不存在,则更新表或添加数据。我的要求是

OPEN CURSOR
     Fetch Next
        While @@fetch_status = 0
          if (Record found) then 
              call update stored procedure
          else
              call Add stored procedure

现在,我遇到的问题是,更新/添加存储过程调用多个其他存储过程来做操作。如果任何其他存储过程有任何问题,我需要回滚所有内容

我尝试使用Begin Transaction并检查是否@@Error但是它无法正常工作。

有任何帮助吗?我正在使用SQL Server 2008

1 个答案:

答案 0 :(得分:3)

Open Cursor
 Fetch Next
        While @@fetch_status = 0
          BEGIN TRY
            BEGIN TRANSACTION
          if (Record found) then Call update Store proc
          else
                  Call Add store proc

          Commit transaction
          End try
          Begin Catch
             if @@Trancount > 0 ROLLBACK TRANSACTION
          END CATCH
 FETCH NEXT