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 :

Problème Bulk collect et Oracle 8


Sujet :

SQL Oracle

  1. #1
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut Problème Bulk collect et Oracle 8
    Bonjour.

    J'ai la requête suivante qui marche sans problème :
    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 Tab1 IS TABLE OF taches_p.nom_tache%TYPE;
    	 v$tab Tab1;
     
    BEGIN
     
    	 SELECT nom_tache BULK COLLECT INTO v$tab FROM taches_p;
     
    	 FOR i IN v$tab.FIRST .. v$tab.LAST
    	 LOOP
    			dbms_output.put_line(v$tab(i));
    	 END LOOP;
     
    END;
    Mais celle-là elle ne marche pas :
    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
    -- Created on 12/02/2008 by IRAS 
    DECLARE
     
    	 TYPE Tab1 IS TABLE OF taches_p.nom_tache%TYPE;
    	 v$tab Tab1;
     
    	 req VARCHAR2(128);
     
    BEGIN
     
    	 req := 'SELECT nom_tache BULK COLLECT INTO v$tab FROM taches_p';
     
       execute immediate req bulk collect into v$tab;
     
    	 FOR i IN v$tab.FIRST .. v$tab.LAST
    	 LOOP
    			dbms_output.put_line(v$tab(i));
    	 END LOOP;
     
    END;
    J'utilise Oracle 8 pour information. J'ai lancé la deuxième requête sous Oracle 9 et ça a marché. J'en conclus donc que c'est un problème de version.

    Mon problème c'est que je ne peux pas paramètrer le select dans la première requête.

    Quelqu'un connaîtrait-il une solution ?

    Merci.
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

  2. #2
    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
    Pourquoi tu mets "bulk collect INTO v$tab" dans le EXECUTE IMMEDIATE alors que c'est déjà défini dans req ?
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  3. #3
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    Erreur de Copier - coller . Désolé.
    La requête c'est
    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
     
    DECLARE
     
    	 TYPE Tab1 IS TABLE OF taches_p.nom_tache%TYPE;
    	 v$tab Tab1;
     
    	 req VARCHAR2(512);
     
    BEGIN
     
    	 req := 'SELECT nom_tache FROM taches_p';
     
    	 EXECUTE IMMEDIATE req BULK COLLECT
    			INTO v$tab;
     
    	 FOR i IN v$tab.FIRST .. v$tab.LAST
    	 LOOP
    			dbms_output.put_line(v$tab(i));
    	 END LOOP;
     
    END;
    Et cela me renvoie l'erreur :
    ORA-06550: Ligne 13 Colonne 25
    PLS-00103: Symbole "BULK" rencontré à la place d'un des symboles suivants ...
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

  4. #4
    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
    Justement, est-ce qu'il ne faut pas laisser le BULK COLLECT dans req, et le supprimer du EXECUTE IMMEDIATE ?
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  5. #5
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    Je pense que c'est la bonne syntaxe.
    Si je mets le bulk collect dans req ça me renvoie une autre erreur :
    Mot clé from absent a l'emplacement prévu
    Et puis je l'essaie en Oracle 9 et ça marche. Ce que je cherche c'est la manière de le faire en Oracle 8.
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

  6. #6
    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
    Ce lien pourrait t'intéresser (va directement à l'encadré vert en bas de page) :
    http://www.oracle.com/oramag/oracle/01-mar/o21sql.html

    D'après ce que je comprends, le BULK COLLECT est une instruction PL/SQL, pour l'utiliser en dynamique, il faut passer par des moyens détournés : l'exemple de la fin est pas mal.
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  7. #7
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    Merci beaucoup de ton aide. Je pense que cela va résoudre mon problème.
    Salutations cordiales.
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

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

Discussions similaires

  1. [Oracle 9i] Bulk collect douteux
    Par Yoh dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/12/2010, 21h49
  2. Réponses: 27
    Dernier message: 25/10/2006, 12h10
  3. [Oracle 8i] returning bulk collect
    Par Febus dans le forum SQL
    Réponses: 6
    Dernier message: 29/09/2006, 09h46
  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