无法在CATCH块SQL

时间:2018-06-12 22:50:51

标签: sql sql-server try-catch throw raiserror

我需要在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;

我尝试了THROWRAISERROR两种方法。但是,它们都不起作用。我在我的应用程序和DBeaver中测试了它,但我仍然无法引发异常。此外,当我在CATCH块之外引发异常时,会使用THROWRAISERROR方法引发异常。不确定我做错了什么。

0 个答案:

没有答案