Erreur transaction [Résolu]

issoux 58 Messages postés lundi 25 avril 2005Date d'inscription 6 mai 2008 Dernière intervention - 4 déc. 2006 à 17:46 - Dernière réponse : cs_skweeky 261 Messages postés mercredi 3 mai 2006Date d'inscription 11 janvier 2010 Dernière intervention
- 16 déc. 2006 à 14:04
Il me sort que mon rollback n'a pas de begin transaction correspondant :

CREATE PROCEDURE LierRequetes @idparent as int , @idfils as int




-- Relier les 2 requêtes apres avoir verifier que le fils n'a pas deja un pere + ajout dans l'historique


as


declare @request1 as int
declare @request2 as int
declare @intErrorCode as int
declare @admin as int
declare @hdu as int


 


BEGIN TRAN




select @request1=idlien from requetes where [mailto:id=@idfils id=@idfils]


SELECT @intErrorCode = @@ERROR
    IF ( @intErrorCode<>0)  GOTO PROBLEM


else


select @admin =currentadmin from requetes where [mailto:id=@idfils id=@idfils]


SELECT @intErrorCode = @@ERROR
    IF (@intErrorCode <> 0) GOTO PROBLEM


else


select @hdu =currenthelpdesk from requetes where [mailto:id=@idfils id=@idfils]
SELECT @intErrorCode = @@ERROR
    IF (@intErrorCode <> 0) GOTO PROBLEM


else


 


update requetes set [mailto:idlien=@idparent idlien=@idparent] where [mailto:id=@idfils id=@idfils]
SELECT @intErrorCode = @@ERROR
    IF (@intErrorCode <> 0 ) GOTO PROBLEM
else


insert into historique values (@idfils,@admin,@hdu,'lien',getdate())


SELECT @intErrorCode = @@ERROR
    IF (@intErrorCode <> 0 ) GOTO PROBLEM


else




select @admin =currentadmin from requetes where [mailto:id=@idparent id=@idparent]


SELECT @intErrorCode = @@ERROR
    IF (@intErrorCode <> 0) GOTO PROBLEM


else


select @hdu =currenthelpdesk from requetes where [mailto:id=@idparent id=@idparent]
SELECT @intErrorCode = @@ERROR
    IF (@intErrorCode <> 0) GOTO PROBLEM
else




insert into historique values (@idparent,@admin,@hdu,'lien',getdate())
SELECT @intErrorCode = @@ERROR
    IF (@intErrorCode <> 0) GOTO PROBLEM


else


COMMIT TRAN




PROBLEM:


BEGIN


PRINT 'Une erreur s est produite ! '


    ROLLBACK


END
GO

Merci pour votre aide
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
cs_skweeky 261 Messages postés mercredi 3 mai 2006Date d'inscription 11 janvier 2010 Dernière intervention - 16 déc. 2006 à 14:04
3
Merci
Bonjour,

Il faudrait je pense faire un RETURN avant le bloc de ROLLBACK pour éviter qu'il ne soit appelé quand la transaction est en COMMIT :

else

COMMIT TRAN

RETURN

PROBLEM:

BEGIN

PRINT 'Une erreur s est produite ! '

    ROLLBACK

END
GO

Cordialement

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration

Merci cs_skweeky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_skweeky

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.