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 :

Problème execute immediate dans boucle


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mai 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème execute immediate dans boucle
    Bonjour à tous,

    Je souhaite récupérer dans une variable la concaténation de toutes les colonnes d'un curseur dans une boucle for.
    Les colonnes de mes tables sont amenées à changer, je construis donc au préalable ma requête (la dessus je m'en sors, j'ai simplifié dans le code ci-dessous).
    Mais c'est lorsque je veux que ma variable requête soit interpréter afin de mettre la concaténation dans une variable concat_col que je bloque.
    J'ai essayé pas mal de chose avec un "execute immediate" et un select bidon. Mais même dans ce cas je rencontre l'erreur :

    ORA-00904: "CURSEUR"."name_col2_tab2": invalid identifier

    Comme si le curseur était hors context.




    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    declare
    requete VARCHAR2(2000);
    concat_col VARCHAR2(2000);
    begin
    requete := 'curseur.name_col1_tab1 || '':'' || curseur.name_col2_tab1 || '':'' || curseur.name_col1_tab2 || '':'' || curseur.name_col2_tab2';
    for curseur in (select * from table1, table2)
    loop
    EXECUTE IMMEDIATE requete into concat_col;  --?????? ligne problématique
    end loop;
    end;


    Je ne sais pas si c'est très clair, n'hésitez pas à me demander des précisions.

    Merci pour votre aide, je n'ai plus d'idée.

  2. #2
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Nom de diou !

    Un EXECUTE IMMEDIATE doit contenir un ordre SQL (select, update, insert, etc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    declare
    requete VARCHAR2(2000);
    concat_col VARCHAR2(2000);
    begin
    requete := 'SELECT table2.name_col1_tab1 ||'':''|| table1.name_col2_tab1 || '':'' || table2.name_col1_tab2 || '':''|| table2.name_col2_tab2 FROM table1,table2';
    EXECUTE IMMEDIATE requete INTO concat_col; 
    end;
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

Discussions similaires

  1. Problème execution fonction dans s//
    Par lgodet dans le forum Web
    Réponses: 1
    Dernier message: 31/03/2010, 11h51
  2. Problème d'index dans boucle for
    Par cocacola0589 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 09/02/2010, 18h22
  3. [Spip] Problème variable PHP dans boucle
    Par Nicolas.S dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/06/2009, 10h31
  4. Problème commande do dans boucle foreach
    Par jchampen dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2008, 14h56
  5. Problème avec variable dans boucle DO WHILE
    Par bandit_debutant dans le forum Langage
    Réponses: 13
    Dernier message: 25/02/2008, 16h34

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