TRY-CATCH-THROW-PRINT

MSSQL

22. 2. 2023
CREATE PROCEDURE xxx AS

    SET XACT_ABORT, NOCOUNT ON

    BEGIN TRY
        BEGIN TRANSACTION
            PRINT CONVERT(NVARCHAR(100),GetDate(),120) + N' BEGIN TRANSACTION ';
            /* Code goes here*/
        COMMIT TRANSACTION
        PRINT CONVERT(NVARCHAR(100),GetDate(),120) + N' COMMIT TRANSACTION ';
    END TRY

    BEGIN CATCH
         IF @@trancount > 0 ROLLBACK TRANSACTION
         PRINT CONVERT(NVARCHAR(100),GetDate(),120) + N' ROLLBACK TRANSACTION ';
         ;THROW

        DECLARE
           @ErMessage NVARCHAR(2048),
           @ErSeverity INT,
           @ErState INT

         SELECT
           @ErMessage = ERROR_MESSAGE(),
           @ErSeverity = ERROR_SEVERITY(),
           @ErState = ERROR_STATE()

         RAISERROR (@ErMessage,
                     @ErSeverity,
                     @ErState )

         --RETURN 55555
    END CATCH

GO

SQL

BEGIN TRY
    BEGIN TRAN;
    SELECT 1 / 0 AS Vysledek INTO #Temp;

    COMMIT;
END TRY
BEGIN CATCH
    IF @@TranCount > 0
        ROLLBACK;
    SELECT
        ERROR_NUMBER()    AS ErrorNumber
       ,ERROR_SEVERITY()  AS ErrorSeverity
       ,ERROR_STATE()     AS ErrorState
       ,ERROR_PROCEDURE() AS ErrorProcedure
       ,ERROR_LINE()      AS ErrorLine
       ,ERROR_MESSAGE()   AS ErrorMessage
    INTO #Error_Log;
END CATCH;


--SELECT * FROM #Temp
SELECT * FROM #Error_Log;