嵌套过程 - EXECUTE之后的事务计数表示BEGIN和COMMIT的数量不匹配

时间:2016-08-26 10:42:30

标签: sql-server-2008

我收到错误

Custom error message. Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0. Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0. 

我的SQL代码正在关注

程序1

CREATE PROCEDURE [dbo].[spProcedure1] 
    @Id int
WITH EXECUTE AS OWNER
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION

EXEC spProcedure2 @Id

-- Code ommited, Next procedures execution

COMMIT TRANSACTION
END TRY
BEGIN CATCH
    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION

    -- Code ommited, saving error to Log table

    RAISERROR(@errorMessage, @errorSeverity, @errorState);
END CATCH
END

程序2

CREATE PROCEDURE [dbo].[spProcedure2]
     @Id int
WITH EXECUTE AS OWNER 
BEGIN
BEGIN TRY

    -- Check if record exists
    IF NOT EXISTS(SELECT * FROM dbo.Table t WHERE t.Id = @Id)
    BEGIN
        -- stop procedure due to user error
        RAISERROR('Custom error message.',16,1)
        RETURN
    END

    -- Code ommited, DML operation

END TRY
BEGIN CATCH

    -- Code ommited, saving error to Log table

    RAISERROR(@errorMessage, @errorSeverity, @errorState);
END CATCH
END

我不确定如何处理程序2中的事务以遵守此错误?

0 个答案:

没有答案