Tsql транзакция - PullRequest
       1

Tsql транзакция

5 голосов
/ 13 марта 2011

Чтобы обернуть хранимую процедуру в транзакцию, я добавляю следующее:

CREATE PROCEDURE [dbo].[P_ORD_InsertTextField]
    //PARAMS
AS
BEGIN
    BEGIN TRY
    BEGIN TRANSACTION

    //STP BODY

    COMMIT
    END TRY
    BEGIN CATCH
      IF @@TRANCOUNT > 0
         ROLLBACK

      DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
      SELECT @ErrMsg = ERROR_MESSAGE(),
             @ErrSeverity = ERROR_SEVERITY()

      RAISERROR(@ErrMsg, @ErrSeverity, 1)
    END CATCH
END
GO

Есть ли более короткий путь, который делает то же самое?это огромный блок кода для «просто» обработки транзакции.

1 Ответ

4 голосов
/ 13 марта 2011

Нет, это в значительной степени так.

Вы можете скрыть обработку @ErrMsg за сохраненным процессом или UDF, и вам не нужна обработка @ErrSeverity.Обычно это 16, что является «определяемой пользователем ошибкой»

См. Также мой ответ здесь: Вложенные хранимые процедуры, содержащие шаблон TRY CATCH ROLLBACK?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...