IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Erreur de troubleshooting sur stored procedure avec une transaction


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut Erreur de troubleshooting sur stored procedure avec une transaction
    Bonjour à tous

    Voici mon erreur
    je reçois un message d'erreur lors de l’exécution de ma stored prodedure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:	<Description,,>
    -- =============================================
    CREATE PROCEDURE InsertRegisterAdresse
    	-- Add the parameters for the stored procedure here
     
    	@Nom varchar(50),
    	@Prenom varchar(50),
    	@Email varchar(50),
    	@Langue varchar(50),
    	@Password varchar(50),
    	@Role varchar(50)  = 'utilisateur' ,
    	@Rue varchar(50),
    	@Numero varchar(50),
    	@Postcode varchar(50),
    	@Ville varchar(50),
    	@Pays varchar(50),
    	@Type int =1
     
     
    AS
    BEGIN
    	SET NOCOUNT ON --added to prevent extra result sets from
    	set xact_abort on
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
    	BEGIN TRANSACTION
     
    	BEGIN TRY
    	DECLARE @IdClient int;
        -- Insert statements for procedure here
    	insert into dbo.Client (
    		[Nom],[Prenom],[Email],[Langue],[Password],[Role]
    	)
    	values
    	(
     
    	@Nom ,
    	@Prenom ,
    	@Email ,
    	@Langue ,
    	@Password ,
    	@Role 
    	)
     
     
    	SET @IdClient = (SELECT IDENT_CURRENT('Client'))
     
    	insert into dbo.Adresse(
    	Rue,Numero,PostCode,Ville,Pays,IdType,IdCLient
    	)
    	values(
    	@Rue ,
    	@Numero ,
    	@Postcode ,
    	@Ville ,
    	@Pays ,
    	@Type,
    	@IdClient)
     
    	COMMIT TRANSACTION
     
    	END TRY 
    	BEGIN CATCH
     
                ROLLBACK
    END CATCH
    END
    Quand je l'exécute via Sql Management studio, l'erreur de se produit pas mais quand je suis en ligne boum plus rien ne fonctionne

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    L'option de session XACT_ABORT positionnée à ON indique que toute transaction est automatiquement annulée sur erreur. Donc je dirais que ce n'est pas ce qui cause ce problème.
    Est-que la transaction déclenche un trigger ?

    Pourriez-vous essayer avec le code suivant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    CREATE PROCEDURE InsertRegisterAdresse
    	@Nom varchar(50),
    	@Prenom varchar(50),
    	@Email varchar(50),
    	@Langue varchar(50),
    	@Password varchar(50),
    	@Role varchar(50)  = 'utilisateur' ,
    	@Rue varchar(50),
    	@Numero varchar(50),
    	@Postcode varchar(50),
    	@Ville varchar(50),
    	@Pays varchar(50),
    	@Type int =1 
    AS
    BEGIN
    	SET NOCOUNT ON
    	SET XACT_ABORT ON	
     
    	BEGIN TRY
    		BEGIN TRANSACTION
    			DECLARE @IdClient int;
     
    			INSERT INTO dbo.Client
    			(
    				Nom
    				, Prenom
    				, Email
    				, Langue
    				, Password
    				, Role
    			)
    			VALUES
    			(	 
    				@Nom
    				, @Prenom
    				, @Email
    				, @Langue
    				, @Password
    				, @Role 
    			)
     
    			SELECT	@IdClient = SCOPE_IDENTITY()
     
    			INSERT INTO dbo.Adresse
    			(
    				Rue
    				, Numero
    				, PostCode
    				, Ville
    				, Pays
    				, IdType
    				, IdCLient
    			)
    			VALUES
    			(
    				@Rue
    				, @Numero
    				, @Postcode
    				, @Ville
    				, @Pays
    				, @Type
    				, @IdClient
    			);
     
    		COMMIT TRANSACTION 
    	END TRY 
    	BEGIN CATCH
    		DECLARE @err_msg nvarchar(4000) = 'Line ' + CAST(ERROR_LINE() AS varchar(10)) + ' - ' + ERROR_MESSAGE()
    			, @err_svt int = ERROR_SEVERITY()
    			, @err_stt int = ERROR_STATE();
     
    		IF XACT_STATE() <> 0
    		BEGIN
    			ROLLBACK TRANSACTION;
    		END
     
    		RAISERROR(@err_msg, @err_svt, @err_stt);
     
    		RETURN;
    	END CATCH
    END
    @++

  3. #3
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut
    Merci de ta réponse et mille excuse de répondre aussi tard j'étais en période d'examen.......
    Je teste ta solution et reviens vers toi

    Merci

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/07/2012, 09h06
  2. Réponses: 1
    Dernier message: 02/02/2007, 06h30
  3. Réponses: 5
    Dernier message: 11/07/2006, 15h54
  4. [vb.net][vbexpress] erreur output parameter stored procedure
    Par graphicsxp dans le forum Windows Forms
    Réponses: 14
    Dernier message: 07/12/2005, 18h24
  5. "Erreur SQL générale" sous NT2000 avec une base ac
    Par aleister dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/04/2005, 20h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo