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

Oracle Discussion :

[9i] Nombre de lignes affectées par un update


Sujet :

Oracle

  1. #1
    yac
    yac est déconnecté
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 31
    Points : 17
    Points
    17
    Par défaut [9i] Nombre de lignes affectées par un update
    Bonjour,

    existe -il un moyen simple pour savoir le nombre de rangées updated suite à un update, sans avoir à faire un select count avant le update , je m'explique :

    dans un code pl/sql, exemple je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update ttt
      set num = 1
      where id = 154;
    pour savoir le nombre de rangées mis à jour existe il un moyen simple sans avoir à faire avant mon update un select count :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(*)
     from ttt
      where id = 154;
    car mon select count risque d'etre long surtout si le update touche à un nombre important de rangées.

    mon environnement est comme suit :
    oracle 9207
    forms 9.0.4.0.19


    merci pour tous

  2. #2
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut
    Tu veux savoir cette information Avant ou Après avoir fait le UPDATE, pour arès tu as SQL%ROWCOUNT mais pour avant

  3. #3
    yac
    yac est déconnecté
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 31
    Points : 17
    Points
    17
    Par défaut nombre de rangées updated
    avez vous un exemple sur son utilisation ?

    merci.

  4. #4
    yac
    yac est déconnecté
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 31
    Points : 17
    Points
    17
    Par défaut nombre de rangées updated
    ca marche merci.

    Bonne journée.

  5. #5
    Membre habitué Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Points : 191
    Points
    191
    Pourquoi faire aujourd'hui ce que l'on peut faire demain ...

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour ,

    J'ai du mal a saisir votre demande , il n'y a qu'un moyen de savoir le nombre de lignes impactés avant le update c'est de faire un select

    Ce que je peux vous proposer pour accellerer votre requête est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(id) 
     from ttt 
      where id = 154;
    et de créer un index sur id

    pour l'exemple d'utilisation de SQL%ROWCOUNT :

    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
     
     
    SQL> create table dvp ( a number ) ; 
     
    Table créée.
     
     
      1  begin
      2  for i in 0..10000
      3  loop
      4  insert into dvp values  ( i) ;
      5  end loop ;
      6  commit ;
      7* end ;
    SQL> r
      1  begin
      2  for i in 0..10000
      3  loop
      4  insert into dvp values  ( i) ;
      5  end loop ;
      6  commit ;
      7* end ;
     
    Procédure PL/SQL terminée avec succès.
     
    SQL> select count (*) from dvp ; 
     
      COUNT(*)
    ----------
         10001
    SQL> set serveroutput on 
    SQL> declare
      2  a number ; 
      3  begin 
      4   update dvp set a =0 where a > 9000 ; 
      5   a := SQL%ROWCOUNT ; 
      6   dbms_output.put_line ( ' nombre de  lignes impactées :' || a ) ; 
      7   commit ;
      8   end ; 
      9  /
    nombre de  lignes impactées :1000
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2015, 18h26
  2. Réponses: 4
    Dernier message: 13/11/2006, 18h05
  3. [Oracle] Nombre de ligne affecté par un update
    Par vimanas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/09/2006, 16h24
  4. [C#] Comment connaître le nombre de lignes affectées par un Select ?
    Par diaboloche dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/09/2006, 13h56
  5. [Oracle] Connaitre le nombre de lignes affectées par un update à l'avance
    Par lionheart33806 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 10/08/2006, 10h35

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