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

PL/SQL Oracle Discussion :

PL/SQL, problème dans un curseur avec un insert


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 16
    Points : 14
    Points
    14
    Par défaut PL/SQL, problème dans un curseur avec un insert
    Bonjour,

    J'ai deux tables: "session_client" et "fichier"
    Je crée un curseur qui est le résultat d'une requête sur "session_client" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cursor c_sessions is select * from session_client where ... ;
    Puis je parcours mon cuseur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for c_l in c_sessions
    loop
    A ce moment j'aimerais insérer dans la table "fichier", un champ de mon tuple courant de mon curseur seulement si celui-ci n'est pas déjà présent dans la table "fichier".
    J'ai donc écris ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO fichier (lib_fichier)
                SELECT c_l.fichier FROM c_sessions
                WHERE c_l.fichier NOT IN
                (SELECT lib_fichier FROM fichier);
    Mais cela ne fonctionne pas! J'ai l'erreur suivante:
    PL/SQL: ORA-00942: Table ou vue inexistante
    en me désigant mon instruction "FROM c_sessions".
    Si je ne peux pas utiliser un curseur dans ma clause FROM, je ne vois pas comment résoudre mon problème!

    Quelqu'un a-t-il une solution susceptible de m'aider? Ou une explication? Merci d'avance!

  2. #2
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Points : 154
    Points
    154
    Par défaut
    salut,

    T'as essayer au lieu de mettre ton curseur dans ta clause from de mettre le vrai nom de la table c'est à dire session_client??

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Est pourquoi pas plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO fichier (lib_fichier) VALUES (c_l.fichier);
    tout simplement
    Il me semble que c'et la meilleur manière d'utiliser ton curseur.

  4. #4
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Points : 154
    Points
    154
    Par défaut
    Mais le problème en voyant ça requete c'est qu'il veu insérer ce qu'il récup ds son curseur mais il ne veut pas de redondance.

    Si elle fait ton code yvesguep il ne fera pas de test sur la redondance

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Pardon, ca m'apprendra a lire en diagonale.

    En utilisant la table DUAL au lieu de "session_client" on peut gagner en pref.
    Je pense

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO fichier (lib_fichier)
                SELECT c_l.fichier FROM DUAL
                WHERE c_l.fichier NOT IN
                (SELECT lib_fichier FROM fichier);
    C juste une idee en passant.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/07/2008, 17h04
  2. Réponses: 10
    Dernier message: 04/10/2007, 14h17
  3. Problème dans des "IF" avec des chaines de caractères
    Par lanysteph dans le forum Langage
    Réponses: 4
    Dernier message: 16/11/2006, 11h37
  4. [SQL] Problème dans instruction FROM
    Par Virgile59 dans le forum Access
    Réponses: 7
    Dernier message: 21/08/2006, 14h28
  5. [SQL] Requête dans une requête...avec des INNER JOIN!
    Par PedroBD dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 06/04/2006, 08h26

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