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 :

8i bulk collect into


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 54
    Points
    54
    Par défaut 8i bulk collect into
    Hello

    J'ai un simple select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT val INTO ???
    FROM TABLE_TEST
    WHERE ID = 111 
    AND TYP IN ('03','04',05')
    Le select statement renvoie plus qu'un row.
    Je voudrais récupérer toutes les valeurs en une seule fois avec le into.

    Je dois récupérer les valeurs dans une table pl/sql que je recois en paramètre car ca se trouve dans une procédure.

    J'avais pensé à utilisé un bulk collect into

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT val BULK COLLECT INTO P_TABLE.VAL?
    Mais ca ne fonctionne pas, normalement on accède p_table(1).val mais si je veux tout renvoyer en une fois quelle est la solution?

    Merci

  2. #2
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Pourquoi ne pas utiliser les collections ou les enregistrements ?

    LBO72.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    A ma connaissance, qui dit BULK COLLECT dit curseur et collection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TYPE tab IS TABLE OF ... ;
    OPEN curseur;
    LOOP
       FETCH curseur BULK COLLECT INTO tab;
       EXIT WHEN curseur%NOTFOUND;
    END LOOP;
    On ne gère pas l'indice du tableau, c'est BULK COLLECT qui justement s'en charge.

    Et pour rebalancer le tableau dans une table, il faut utiliser FORALL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    FORALL i IN tab.FIRST..tab.LAST
    INSERT INTO table (col1)
    VALUES (tab(i));
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  4. #4
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    dgi77
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
    C'est excellent
    LBO72.

Discussions similaires

  1. Returning bulk collect into dans du sql dynamique
    Par puck78 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 19/01/2009, 19h29
  2. Bug PL/SQL ? (forall, bulk collect into)
    Par wondersonic dans le forum PL/SQL
    Réponses: 4
    Dernier message: 06/02/2008, 12h05
  3. [9i] Performances du BULK COLLECT INTO ?
    Par AyaGizmo dans le forum SQL
    Réponses: 6
    Dernier message: 18/10/2007, 17h20
  4. BULK COLLECT
    Par ghostlord79 dans le forum SQL
    Réponses: 3
    Dernier message: 06/08/2004, 13h42
  5. failed BULK COLLECT
    Par patmaba dans le forum SQL
    Réponses: 7
    Dernier message: 01/06/2004, 12h03

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