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

SQL Oracle Discussion :

failed BULK COLLECT


Sujet :

SQL Oracle

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 422
    Par défaut failed BULK COLLECT
    Le bulk collect sur curseur ne fonctionne pas.

    Quel version de db faut-il pour utiliser le bulk collect ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    merci de mettre le code qui pose pb et l'erreur en question

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    BULK COLLECT apparaît avec Oracle 8i

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 422
    Par défaut
    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
     
    Declare
          TYPE TYP_TAB_usr IS TABLE OF dams_users%Rowtype ;
          Tabusr TYP_TAB_usr ;
    Begin  
          Select
             *
          BULK COLLECT
          Into
             Tabusr
         From 
           dams_users
         ;
         For i IN Tabusr.first..Tabusr.last Loop
           dbms_output.put_line( Tabusr(i).SHORT_NAME  || ' - ' || Tabusr(i).LONG_NAME ) ;
         End loop ;
    End ;
     
    The following error has occurred:
     
    ORA-06550: line 9, column 10:
    PLS-00597: expression 'TABUSR' in the INTO list is of wrong type
    ORA-06550: line 5, column 7:
    PL/SQL: SQL Statement ignored
    voilà le code que j'ai effectué

    et la version de la db est la suivante

    Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
    PL/SQL Release 8.1.7.4.0 - Production
    CORE 8.1.7.0.0 Production
    TNS for Solaris: Version 8.1.7.4.0 - Production
    NLSRTL Version 3.4.1.0.0 - Production

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Je crains que la version 8i ne supporte pas les tables d'entregistrements avec le BULK COLLECT.
    Par contre cela fonctionne parfaitement en 9i...

    Dans votre cas, il ne vous reste plus qu'à décomposer vos tables en champs...

    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
    Declare
    TYPE C1 is table of ma_table.champ1%type ;
    TYPE C2 is table of ma_table.champ2%type ;
    ....
    tab1 C1;
    tab2 C2;
    ...
    Begin
      Select 
        col1, col2,...,col1 BULK COLLECT Into tab1,tab2,...,tabn
        For col1.first..col1.last Loop
          .......
        End loop ;
    ....
    End ;

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 422
    Par défaut
    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
          TYPE TYP_TAB_usr IS TABLE OF dams_users%Rowtype ;
          Tabusr TYP_TAB_usr ;
    Begin  
          Select SHORT_NAME, LONG_NAME
             *
          BULK COLLECT
          Into
             Tabusr.SHORT_NAME, Tabusr.LONG_NAME
         From 
           dams_users
         ;
         For i IN Tabusr.first..Tabusr.last Loop
           dbms_output.put_line( Tabusr(i).SHORT_NAME  || ' - ' || Tabusr(i).LONG_NAME ) ;
         End loop ;
    End ;
    J'ai tapez ceci et cela ne marche toujours pas.

  7. #7
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    TYPE TYP_TAB_usr IS TABLE OF dams_users%Rowtype ;
    Je crois que vous n'avez pas bien compris.

    Vous ne pouvez pas utiliser de tables d'enregistrements (dams_users%Rowtype dans votre exemple)

    Il faut décomposer en CHAMPS comme dans l'exemple fourni juste avant

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 422
    Par défaut
    pardon.

    ok

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle 8i] returning bulk collect
    Par Febus dans le forum SQL
    Réponses: 6
    Dernier message: 29/09/2006, 09h46
  2. Réponses: 6
    Dernier message: 24/03/2006, 09h22
  3. BULK COLLECT ==> TYPE TABLE OF (Cursor Rowtype)
    Par argoet dans le forum Oracle
    Réponses: 5
    Dernier message: 17/05/2005, 16h47
  4. [Forms6i] Pb avec BULK COLLECT
    Par Kast dans le forum Forms
    Réponses: 3
    Dernier message: 27/12/2004, 16h55
  5. BULK COLLECT
    Par ghostlord79 dans le forum SQL
    Réponses: 3
    Dernier message: 06/08/2004, 13h42

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