Обработка ошибок с помощью курсора в SQL - PullRequest
1 голос
/ 30 января 2012

У меня есть курсор, который либо Обновить таблицу, либо Добавить данные, если запись не существует.Мое требование:

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 Ответ

3 голосов
/ 30 января 2012
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...