MSSQ存储过程增加事务处理跟自定义报错Demo

create procedure procedureName
as
BEGIN TRY
    begin transaction
        -- 设置错误输出
        SET NOCOUNT ON;
        SET XACT_ABORT ON;

        declare @Counts int
        DECLARE @ErrorMessage NVARCHAR(4000) = '自定义异常信息';
        set @Counts = 1
        if (@Counts > 0)
            begin
                set @ErrorMessage = '错误信息:数量大于0';
                THROW 50000, @ErrorMessage, 1;
            end
    commit
END TRY
BEGIN CATCH
    rollback
    PRINT 'Error Number :' + CAST(ERROR_NUMBER() AS VARCHAR(10))
    PRINT 'Error Message :' + ERROR_MESSAGE()
    PRINT 'Error Severity :' + CAST(ERROR_SEVERITY() AS VARCHAR(10))
    PRINT 'Error State :' + CAST(ERROR_STATE() AS VARCHAR(10))
    PRINT 'Error Line :' + CAST(ERROR_LINE() AS VARCHAR(10))
    PRINT 'Error Proc :' + COALESCE(ERROR_PROCEDURE(), 'not within proc')
END CATCH

你可能感兴趣的:(SQL,数据库,sql)