Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2011, 17h10   #1
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 70
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 70
Points : 13
Points : 13
Par défaut Comment compter les lignes insérées ?

Bonjour,

J'ai un gros script d'insertion de données dans ma base et j'aimerais connaitre le nombre total d'insertion effectué à la fin de ce script ...

En gros j'ai plusieurs INSERT ...
Donc dans mes messages j'ai autant de fois de messages du genre xx lignes affectées
Et ce que j'aimerais c'est connaitre la totalité de ces insertions !
Y a t il une variable system me permettant de faire ça ?
weebo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 18h12   #2
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Créez une variable integer,après chaque insert faites:

Code :
SET @VARIABLE=@VARIABLE+@@ROWCOUNT
a la fin:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 09h06   #3
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 70
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 70
Points : 13
Points : 13
Bonjour,

Oui c'est exactement ce que j'ai fait !
Mais le soucis c'est que je fais un test après chaque insertion

Par exemple, après l'insertion des fiches :
Code :
1
2
3
4
5
 
IF @@ERROR <> 0
    PRINT N'ERREUR : Fiche'
ELSE
	PRINT N'TABLE : Fiche-> OK'
Pour tester si mon insertion c'est bien passée !

Le problème est que si je SET ma variable pour incrémenter le nombre de lignes insérées dans la table entre le script d'insertion et ce code, le code de vérification ci-dessus ne va plus vérifier l'insertion mais va vérifier si le SET s'est bien passé ! Et ce n'est pas ce que je veux ...
Car au final, une insertion de données (ici les fiches) peut ne pas fonctionner, et vu que le SET se passe bien, il va m'afficher 'Fiche -> OK'
weebo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 09h49   #4
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 70
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 70
Points : 13
Points : 13
En grattant un peu j'ai trouvé la réponse, pour ceux que ça intéresse :

Il faut déclarer 2 variables avant le script du genre :
Code :
1
2
3
4
 
DECLARE @ErrorVar INT;
DECLARE @RowCountVar int
SET @RowCountVar = 0;
Après chaque script d'insertion il suffit d'ajouter la requête suivante :
Code :
1
2
3
 
SELECT @ErrorVar = @@ERROR
,@RowCountVar = @RowCountVar + @@ROWCOUNT;
Pour tester si l'insertion s'est bien passé :
Code :
1
2
3
4
5
 
IF @ErrorVar <> 0
    PRINT N'ERREUR : Fiche'
ELSE
    PRINT N'TABLE : Fiche-> OK'
Et à la fin du script, pour avoir le nombre total de lignes insérées :
Code :
1
2
 
PRINT @RowCountVar ;
Cette méthode fonctionne parfaitement !
weebo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h16.


 
 
 
 
Partenaires

Hébergement Web