donc je créé que (je trouve des choses sur d'autres sites) pour gérer les transactions et ayant une sorte de stacktrace lors de l'exécution procédure stockée qui pourrait appeler une autre procédure stockée qui ont besoin transaction, etcvoyez-vous un problème avec ce modèle de procédure stockée?
donc si je un appelant B et B appelle C et C obtenu une erreur, je peux correctement rollback mes affaires et en retournant une stacktrace disant: erreur dans C suivre la trace pour savoir où/comment/etc ...
Est-ce que l'un de vous a trouvé un problème avec cette logique?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[NAME]
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
declare @trancount int
set @trancount = @@trancount
declare @savePointName varchar(40)
set @savePointName = newid()
BEGIN TRY
if @trancount = 0
begin transaction
else
save transaction @savePointName
/*
// STUFF HERE
*/
if @trancount = 0
commit transaction
END TRY
BEGIN CATCH
declare @xstate int
set @xstate = XACT_STATE()
if @xstate = -1 and @trancount = 0
rollback transaction
if @xstate = 1 and @trancount = 0
rollback transaction
if @xstate = 1 and @trancount > 0
rollback transaction @savePointName
declare @message varchar(max)
set @message = ERROR_MESSAGE() +
' (' + ERROR_PROCEDURE() +
':' + ltrim(str(ERROR_LINE())) +
', Raised ' + ltrim(str(ERROR_NUMBER())) +
', Severity ' + ltrim(str(ERROR_SEVERITY())) +
', State ' + ltrim(str(ERROR_STATE())) + ')'
RAISERROR(@message,16,1)
END CATCH
END
Y at-il une erreur que vous voulez que nous regardions? – JonH
non, je veux savoir si quelqu'un trouve un problème de logique, jusqu'à présent, il semble fonctionner, mais il semble dans le cycle de vie d'Adobe, il pourrait y avoir un problème – Fredou
pourquoi un vote négatif? – Fredou