Erreur transaction

Résolu
issoux Messages postés 58 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 6 mai 2008 - 4 déc. 2006 à 17:46
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre 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
A voir également:

1 réponse

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
16 déc. 2006 à 14:04
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
3
Rejoignez-nous