Erreur transaction [Résolu]

Messages postés
58
Date d'inscription
lundi 25 avril 2005
Dernière intervention
6 mai 2008
- - Dernière réponse : cs_skweeky
Messages postés
261
Date d'inscription
mercredi 3 mai 2006
Dernière intervention
11 janvier 2010
- 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
Messages postés
261
Date d'inscription
mercredi 3 mai 2006
Dernière intervention
11 janvier 2010
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci 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.