簡體   English   中英

存儲過程錯誤-事務計數不匹配

[英]Stored Procedure Error - Transaction Count mismatch

我一直在執行此存儲過程,但是當我執行存儲過程時,會得到無限執行。 這會導致死鎖。

這是我遇到的錯誤,有人可以幫我嗎? 謝謝。

EXECUTE之后的事務計數指示BEGIN和COMMIT語句的數量不匹配。 上一個計數= 1,當前計數= 2。

碼:

ALTER PROCEDURE [dbo].[spMaterialReceivingCreateItemRequirements]
   @DomainSite nvarchar(8),
   @ItemNo nvarchar(18),
   @tReceiving_id integer,
   @SampleRequired integer,
   @UserName nvarchar(50)
AS
BEGIN
   Declare @ErrorNo integer = '',
           @New_JobNo integer,
           @Status nvarchar(50) = 'InProcess',
           @SPName nvarchar(max) = '',
           @intSampleNo integer =1,
           @ErrorMessage nvarchar(max) = ''

    begin transaction t1
    Begin try
        BEGIN
            --Generate 1 sample for item requirements
            set @SampleRequired = 1

            WHILE (@intSampleNo <= @SampleRequired)
            BEGIN
                insert into tItemRequirements
                   select 
                       domainSite, @tReceiving_id, @ItemNo,
                       WorkCenter, tStationsType_id,
                       tSpecTestParameters_descriptions_id,
                       --row_number() OVER (ORDER BY ID) AS CurrentSet,
                       1 AS CurrentSet,
                       @intSampleNo, 1, 'InComplete', getdate(), @UserName 
                   from 
                       tspectestparameters
                   where 
                       itemno = @ItemNo 

                set @intSampleNo = @intSampleNo +1
            end
        END
        END TRY
        Begin catch
             SELECT 
                 @ErrorNo = ERROR_NUMBER(),
                 @SPName = ERROR_PROCEDURE(),
                 @ErrorMessage = ERROR_MESSAGE();

                 rollback transaction t1
        end catch
END
BEGIN TRANSACTION t1

BEGIN TRY
    BEGIN
        --Generate 1 sample for item requirements
        SET @SampleRequired = 1

        WHILE (@intSampleNo <= @SampleRequired)
        BEGIN
            INSERT INTO tItemRequirements
            SELECT domainSite
                , @tReceiving_id
                , @ItemNo
                , WorkCenter
                , tStationsType_id
                , tSpecTestParameters_descriptions_id
                ,
                --row_number() OVER (ORDER BY ID) AS CurrentSet,
                1 AS CurrentSet
                , @intSampleNo
                , 1
                , 'InComplete'
                , getdate()
                , @UserName
            FROM tspectestparameters
            WHERE itemno = @ItemNo

            SET @intSampleNo = @intSampleNo + 1
        END
    END
COMMIT
END TRY

BEGIN CATCH
    SELECT @ErrorNo = ERROR_NUMBER()
        , @SPName = ERROR_PROCEDURE()
        , @ErrorMessage = ERROR_MESSAGE();

    ROLLBACK TRANSACTION t1
END CATCH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM