Невозможно вызвать / выбросить исключение внутри блока CATCH SQL - PullRequest
0 голосов
/ 13 июня 2018

Мне нужно бросить / поднять исключение в SQL, чтобы поймать в приложении C #.Однако всякий раз, когда я выкидываю ошибку внутри блока CATCH, ошибка фактически не выдается.Вот код SQL, который я использую:

BEGIN TRY
    BEGIN TRANSACTION 
        INSERT INTO Transactions (Id, Amount) 
        VALUES (NEWID(), 43346);

        INSERT INTO Transactions (Id, Amount) 
        VALUES (NEWID(), 'fas');
    COMMIT TRANSACTION 
END TRY
BEGIN CATCH
    DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
    DECLARE @ErrorSeverity INT = ERROR_SEVERITY();
    DECLARE @ErrorState INT = ERROR_STATE();

    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;

--  RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState);

    THROW 50001,  @ErrorMessage, @ErrorSeverity;
END CATCH;

Я пробовал оба метода THROW и RAISERROR.Однако ни один из них не работает.Я проверил это в своем приложении и в DBeaver, но все еще не могу вызвать исключение.Более того, когда я генерирую исключение за пределами блока CATCH, то исключение вызывается с использованием методов THROW и RAISERROR.Не уверен, что я делаю не так.

...