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 :

T-SQL Insertion en Boucles Imbriquéés


Sujet :

Développement SQL Server

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 727
    Points : 261
    Points
    261
    Par défaut T-SQL Insertion en Boucles Imbriquéés
    Bonjour,

    Je voudrai faire un test:
    - Insérer des nombres dans une table dans une une première boucle de i à i+100 par exemple faire un commite
    - Puis recomncer la même opération n fois ?

    Pour la première boucle c'est fait mais pour je bloque sur la 2ème ?

    Merci.

    @+

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Intérêt ?

    Que vous fassiez des commit tous les millions de ligne, passe encore, mais toutes les 100 lignes, je vois pas trop...

    A la base vous ne devriez surtout pas faire de commit intermédiaire (sauf si réel besoin applicatif, genre plus de mémoire).

    Car si votre traitement échoue en plein milieu, vous êtes pas dans la merde pour reprendre là où il s'est arrêté...

    Et accessoirement, pour les performances, toujours traiter les données dans leur ensemble et non par lots, et jamais, ô grand jamais de boucle !
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 727
    Points : 261
    Points
    261
    Par défaut
    Bonsoir,

    Au delà d'un million je plante le traitement, donc je par exemple je "commit" au bout de chaque million pour reboucler.
    C'est pour faire durer le traitement en fonction des tests de charge.

    Merci.

    @+

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    En postant le code que vous avez écrit, on pourrait mieux cerner votre besoin...

    Vous pouvez imbriquer vos boucles.

    Vous pouvez aussi utiliser la commande GO, en spécifiant le nombre d'itérations voulues :


  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 727
    Points : 261
    Points
    261
    Par défaut
    Bonjour et Merci.

    Voici la reqquête que je voudrais faire "boucler":

    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
    DECLARE @boucle AS INT
    DECLARE @debut AS INT
    DECLARE @jump AS INT
    DECLARE @fin AS INT
     
    SET @boucle = 1
    SET @debut = 1
    SET @jump = 1
    SET @fin = 100000
     
    BEGIN TRANSACTION
    WHILE(@debut <= @fin)
    BEGIN
    INSERT INTO TST VALUES(@debut)
    SET @debut += @jump
    END
    COMMIT TRANSACTION
    Merci.

    @+

Discussions similaires

  1. [SQL] Insert avec boucle
    Par Virgile59 dans le forum Développement
    Réponses: 1
    Dernier message: 05/11/2008, 10h46
  2. Réponses: 2
    Dernier message: 30/09/2005, 15h41
  3. Multiplier les And dans Sql Insert Into
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 23/09/2005, 21h55
  4. Réponses: 4
    Dernier message: 30/01/2005, 14h23
  5. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38

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