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 :

curseur dynamic avec un FOR


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Par défaut curseur dynamic avec un FOR
    Bonjour,

    Je cherche un exemple de curseur dynamic avec un FOR.

    Les seuls exemple que j'ai vu sont avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    open test_cur for 'select * from clients'
    LOOP
        Fetch test_cur IN test_rec
        EXIT WHEN ....
     
    END LOOP
    Close test_cur;
    Je voudrais éviter de devoir gerer le open close fetch en utilisant ce curseur dans un FOR.

    Est-ce que ca se fait et avez vous un exemple svp?
    merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Par défaut
    Voilà ce que çà donne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FOR test_rec IN select * from clients
    LOOP
      .....
    END LOOP;
    sauf si tu sous entendais que la chaîne "select * from clients" est obtenue dynamiquement... auquel ca c'est beaucoup plus compliqué

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Par défaut
    En fait c'est plus comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    v_clients := clients
    FOR test_rec IN 'select * from '||v_clients
    LOOP
      .....
    END LOOP;
    et il me donne une erreur : PLS-00103: Encountered the symbol "LOOP" when expecting one of the following:

    . ( * @ % & - + / at mod remainder rem .. <an exponent (**)>
    ||

    est-ce que ce serait supposé marché comme ca?
    merci

  4. #4
    Membre expérimenté
    Inscrit en
    Février 2003
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 182
    Par défaut
    Je ne sais pas si ta requête fonctionne mais il manque un espace a la fin de la table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    v_clients := clients
    FOR test_rec IN 'select * from '||v_clients||'  '
    LOOP
      .....
    END LOOP;

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par MAMMAR
    Je ne sais pas si ta requête fonctionne mais il manque un espace a la fin de la table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    v_clients := clients
    FOR test_rec IN 'select * from '||v_clients||'  '
    LOOP
      .....
    END LOOP;
    ?!? Un espace à la fin de la table ?
    execute immediate 'select * from dual' marche très bien sans espace à la fin.
    L'erreur vient que ce n'est pas possible. Le IN attend un curseur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    BEGIN
    	FOR i IN 'select * from DUAL'
    	LOOP
    		NULL;
    	END LOOP;
    END;	
    ORA-06550: line 2, COLUMN 11:
    PLS-00999: implementation restriction (may be TEMPORARY) 
    ORA-06550: line 2, COLUMN 2:
    PL/SQL: STATEMENT ignored

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    L'autre façon de faire est de faire un execute immediate bulk collect dans une collection et ensuite de boucler sur cette collection.

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Par défaut
    merci beaucoup

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

Discussions similaires

  1. [vb6]=Probleme avec open for append
    Par prison_break dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 02/01/2007, 13h40
  2. [ActionScript] Problème avec boucle 'FOR'
    Par BnA dans le forum Flash
    Réponses: 7
    Dernier message: 02/11/2006, 09h26
  3. Lister les dossiers avec un for
    Par AnkyFive dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 25/09/2006, 10h14
  4. [SQL Server] parcourir une Table avec un FOR
    Par papouAlain dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2006, 11h49
  5. faire plusieur declaration avec boucle for ?
    Par debutant-1 dans le forum C
    Réponses: 4
    Dernier message: 18/05/2006, 20h19

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