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

PL/SQL Oracle Discussion :

Nombre de lignes


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Nombre de lignes


    j'ai une procédure qui me retourne un curseur,
    y'a t'il une commande pour connaitre le nombre de ligne de mon curseur sans avoir à faire un FETCH ou apres avoir fait un PRINT du curseur dans fichier TXT

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Avril 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Avril 2007
    Messages : 135
    Points : 193
    Points
    193
    Par défaut
    Bonjour,

    essaie curseur%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
     
    SQL> declare
      2   cursor csr is select ename from emp;
      3   v_ename emp.ename%type;
      4  begin
      5   open csr;
      6   loop
      7    fetch csr into v_ename;
      8    exit when csr%notfound;
      9   end loop;
     10   dbms_output.put_line('Total :'||csr%rowcount);
     11   close csr;
     12  end;
     13  /
    Total :14
     
    PL/SQL procedure successfully completed.
    ou

    bulk collect

    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
     
    SQL> create or replace type type1 as table of varchar2(50);
      2  /
     
    Type created.
     
    SQL> declare
      2   t1 type1;
      3  begin
      4   select ename
      5   bulk collect into t1
      6   from emp;
      7   dbms_output.put_line('Total :' ||sql%rowcount);
      8  end;
      9  /
    Total :14
     
    PL/SQL procedure successfully completed.
    Guillaume HARRY
    Expertise bases de données et Java/J2EE

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse, mais malheureusement je ne peux pas utiliser rowcount car ça m’oblige de faire un FETCH sur le curseur, et dans le deuxième cas je ne vois pas comment utiliser le bulk collect dans mon curseur

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Avril 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Avril 2007
    Messages : 135
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par ANIS.AD Voir le message
    Merci pour ta réponse, mais malheureusement je ne peux pas utiliser rowcount car ça m’oblige de faire un FETCH sur le curseur, et dans le deuxième cas je ne vois pas comment utiliser le bulk collect dans mon curseur
    Malheureusement, il faut parcourir le curseur pour pouvoir le nombre de lignes traitées.

    Sinon si tu peux récupérer la requête de ton curseur, tu peux tenter un count(*) sur cette requête...
    Guillaume HARRY
    Expertise bases de données et Java/J2EE

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Un COUNT m’oblige à avoir deux requêtes, et pour les maintenances, évolutions ou perfs, c’est difficiles à gérer surtout que c’est de grosse requêtes.
    Mais on faisons un Print du CURSEUR dans fichier TXT, il n’ya pas qlq chose qui me retourne le nombre de ligne

    Voici mon code
    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
     
    SET NEWPAGE 0
    SET SPACE 0
    SET PAGESIZE 0
    set linesize 2500
    SET ECHO OFF
    SET FEEDBACK OFF
    SET HEADING OFF
    SET MARKUP HTML OFF
    SET ESCAPE \
    Whenever sqlerror Exit Failure 
    WHENEVER SQLERROR EXIT SQL.SQLCODE;
     
    ---------------------------------------------------------------------------------------------------------------
    -- Génération des fichiers plats ENTREPRISE.TXT
    ---------------------------------------------------------------------------------------------------------------
    var p_curseur_ENTETE refcursor;
    var p_curseur refcursor;
    var p_curseur_FIN refcursor;
    var p_date DATE;
    COLUMN l_file new_value l_file
    p_date = &1
    execute PCK_EXPORT_SIERA_BASECO.PRC_ENTETE_FILE( '&1' , 'ENT', :p_curseur_ENTETE);
    execute PCK_EXPORT_SIERA_BASECO.PRC_EXPORT_ENTREPRISE_BIS ( '&1' , :p_curseur);
    SELECT 'base_commerciale_entreprise_'||to_char( to_date('&1') , 'YYYYMMDD' )||'.txt' l_file FROM dual;
    Spool &l_file
    print p_curseur_ENTETE
    print p_curseur
    spool off

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Avril 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Avril 2007
    Messages : 135
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par ANIS.AD Voir le message
    Un COUNT m’oblige à avoir deux requêtes, et pour les maintenances, évolutions ou perfs, c’est difficiles à gérer surtout que c’est de grosse requêtes.
    Mais on faisons un Print du CURSEUR dans fichier TXT, il n’ya pas qlq chose qui me retourne le nombre de ligne
    L'option feedback permet l'affichage du nombre de lignes, donc au lieu depasse à
    Guillaume HARRY
    Expertise bases de données et Java/J2EE

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci,
    en faisant la modif, ça m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    680 ligne(s) sélectionnée(s).
    .
    j'aimerais avoir le nombre de ligne dans une variable que je pourrais exploiter
    c'est possible don juste 680

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Points : 342
    Points
    342
    Par défaut
    Il n'y a pas de possiblité, sous Oracle, de connaitre le nombre de lignes ramenées par une requette sans l'executer.
    Oracle n'est pas devin .
    L'option "feedback" n'est pas du sql, c'est du sql+.
    C'est surement l'utilisation de rowcount par sql+ qui permet d'avoir ce résultat.

  9. #9
    Invité
    Invité(e)
    Par défaut
    je ne vois pas vraiment l'intérêt de passer par un fichier de spool plutôt que de faire un fetch...
    Tu t'embêtes pour rien.

  10. #10
    Membre habitué
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Avril 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Avril 2007
    Messages : 135
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par ANIS.AD Voir le message
    Merci,
    en faisant la modif, ça m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    680 ligne(s) sélectionnée(s).
    .
    j'aimerais avoir le nombre de ligne dans une variable que je pourrais exploiter
    c'est possible don juste 680
    Fait un petit programme java. JDBC te permet de connaître rapidement le nombre de lignes retournées par ton select...
    Guillaume HARRY
    Expertise bases de données et Java/J2EE

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je suis un peu limiter dans les solutions à choisir :
    - Je dois transmettre un fichier TXT contenant les résultats de ma requête
    - Je ne peux pas utiliser la gestion de fichier d’ Oracle (UTL_FILE)
    - Et JAVA encore moins!!!

    une fois qu'on fait un PRINT du curseur la requete à était excutée? il n'ya rien dans sql+ qui me permet d'avoir ce que je veux

  12. #12
    Membre habitué
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Avril 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Avril 2007
    Messages : 135
    Points : 193
    Points
    193
    Par défaut
    Malheureusement sans faire de count, si tu veux un nombre de lignes, tu dois d'abord les parcourir (fetch ou exécution du select)
    Guillaume HARRY
    Expertise bases de données et Java/J2EE

Discussions similaires

  1. Limiter le nombre de Ligne d'un RichEdit
    Par Argonz dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/07/2004, 10h16
  2. [SYBASE] nombre de ligne impactée par UPDATE
    Par metheorn dans le forum Sybase
    Réponses: 3
    Dernier message: 14/05/2004, 16h47
  3. determination le nombre de ligne d'une table
    Par picoti2 dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/03/2004, 09h25
  4. Réponses: 2
    Dernier message: 02/03/2004, 19h38
  5. [TListView] Compter le nombre de lignes
    Par agh dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/09/2002, 20h25

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