Мне нужно бросить / поднять исключение в 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
.Не уверен, что я делаю не так.