[英]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.