resident
سه شنبه 21 دی 1395, 22:41 عصر
سلام.
من دو تا sp دارم که در زیر مینوسم. گاهی اوقات وقتی MainSP رو اجرا می کنم خظای 3930 رو میده که مربوط به Transactionهست.
روی SP به نام subsp زمانیکه به کد insert ای که قرمز کردم میرسه میپره تو catch و یعد این خطا رو میده. با اینکه دستور insert قرمز رنگ به لحاظ دستوری مشکل نداره.
کجای کدم مشکل داره؟
من TRy/Catch ها و Transaction ها رو برداشتم مشکل حل شد. به همین خاطر میدونم مشکل از اینهاست. ممنون میشم کمکم کنید
-----------------------------------------
ALTER Procedure MainSP
as
Begin
SET NOCOUNT ON;
Declare @PersonCompanyID int
Begin Tran
exec SubspName @ErrorNumber output
if @ErrorNumber!=0
begin
ROLLBACK TRANSACTION;
return
end
begin try
INSERT INTO ...
VALUES....
End Try
Begin Catch
IF @@TRANCOUNT > 0
begin
ROLLBACK TRANSACTION;
exec [system].[ErrorLogInsert] 'MainSP','',@UserID,@ErrorNumber out
return
end
End Catch
exec otger sp...
EXEC other sp2 @ErrorNumber output
if @ErrorNumber!=0
begin
ROLLBACK TRANSACTION;
return
end
commit tran
End
================================================== =======
ALTER procedure SubspName
as
begin
SET NOCOUNT ON;
Begin TRY
begin tran
declare @IsDuplicate bit
EXEC dbo.xxx x,y,@ErrorNumber OUTPUT
if @ErrorNumber!=0
begin
ROLLBACK TRANSACTION;
exec [system].[ErrorLogInsert] 'SubspName','',@UserID,@ErrorNumber out
return
end
if (.....)
begin
exec other sp
end
INSERT INTO (...)
VALUES(....)
set @ErrorNumber=@@ERROR
if @ErrorNumber!=0
begin
ROLLBACK TRANSACTION;
exec [system].[ErrorLogInsert] 'SubspName','',@UserID,@ErrorNumber out
return
end
set @ID=(SELECT SCOPE_IDENTITY())
commit tran
End Try
Begin Catch
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
exec [system].[ErrorLogInsert] 'SubspName','',@UserID,@ErrorNumber out
End Catch
END
من دو تا sp دارم که در زیر مینوسم. گاهی اوقات وقتی MainSP رو اجرا می کنم خظای 3930 رو میده که مربوط به Transactionهست.
روی SP به نام subsp زمانیکه به کد insert ای که قرمز کردم میرسه میپره تو catch و یعد این خطا رو میده. با اینکه دستور insert قرمز رنگ به لحاظ دستوری مشکل نداره.
کجای کدم مشکل داره؟
من TRy/Catch ها و Transaction ها رو برداشتم مشکل حل شد. به همین خاطر میدونم مشکل از اینهاست. ممنون میشم کمکم کنید
-----------------------------------------
ALTER Procedure MainSP
as
Begin
SET NOCOUNT ON;
Declare @PersonCompanyID int
Begin Tran
exec SubspName @ErrorNumber output
if @ErrorNumber!=0
begin
ROLLBACK TRANSACTION;
return
end
begin try
INSERT INTO ...
VALUES....
End Try
Begin Catch
IF @@TRANCOUNT > 0
begin
ROLLBACK TRANSACTION;
exec [system].[ErrorLogInsert] 'MainSP','',@UserID,@ErrorNumber out
return
end
End Catch
exec otger sp...
EXEC other sp2 @ErrorNumber output
if @ErrorNumber!=0
begin
ROLLBACK TRANSACTION;
return
end
commit tran
End
================================================== =======
ALTER procedure SubspName
as
begin
SET NOCOUNT ON;
Begin TRY
begin tran
declare @IsDuplicate bit
EXEC dbo.xxx x,y,@ErrorNumber OUTPUT
if @ErrorNumber!=0
begin
ROLLBACK TRANSACTION;
exec [system].[ErrorLogInsert] 'SubspName','',@UserID,@ErrorNumber out
return
end
if (.....)
begin
exec other sp
end
INSERT INTO (...)
VALUES(....)
set @ErrorNumber=@@ERROR
if @ErrorNumber!=0
begin
ROLLBACK TRANSACTION;
exec [system].[ErrorLogInsert] 'SubspName','',@UserID,@ErrorNumber out
return
end
set @ID=(SELECT SCOPE_IDENTITY())
commit tran
End Try
Begin Catch
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
exec [system].[ErrorLogInsert] 'SubspName','',@UserID,@ErrorNumber out
End Catch
END