-1

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 
+0

Y at-il une erreur que vous voulez que nous regardions? – JonH

+0

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

+0

pourquoi un vote négatif? – Fredou

Répondre

1

Non, je ne peux pas déceler de problème avec ce code.

Questions connexes