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 :

Résultat d'une requete dans une table temporaire


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Juillet 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 23
    Par défaut Résultat d'une requete dans une table temporaire
    Bonjour,
    Je souhaiterais stocker dans une table temporaire à une colonne (ID) le résultat d'une requête du genre : select id from table1 union select id from table2.

    La suite de mon traitement consiste à lancer un certain nombre de requêtes DELETE dans lesquelles la clause est DELETE FROM ... WHERE ID de ma table NOT IN (les valeurs de ma colonne de ma table temporaire)...

    Je suis novice en PL/SQL alors peut être ai je mal cherché mais je n'arrive pas à trouver de solutions.
    Faut-il que je passe par un curseur ? Par des records ?
    Où faut-il que je déclare ma table temporaire ? Dans la section DECLARE ?

    Si quelqu'un a une piste ?
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    et pourquoi pas par une requête SQL de type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM ... WHERE ID (select id from table1 union all select id from table2)

  3. #3
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Juillet 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 23
    Par défaut
    Parce qu'il y a une dizaine de DELETE à faire.

    Donc faire à chaque DELETE ...WHERE ID NOT IN(SELECT ID from table1 union select ID from table2) prend plus de temps que de stocker le résultat de la sous requête dans une table temporaire et ensuite travailler avec cette table temporaire.

    D'autand plus que je suis obligé de passer par un union et l'exécution d'une requête avec union n'est déjà pas très rapide qd il y a bcp d'enregistrements ds les tables concernées.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Orafrance a proposé UNION ALL qui est bien plus performant que UNION car il ne fait pas de DISTINCT, et pour un NOT IN tu n'as pas besoin du DISTINCT à priori.
    Mais si avec le UNION ALL ce n'est pas assez performant, alors concernant la table temporaire, elle n'a de temporaire que les données.
    En gros tu crées la table temporaire en dur en dehors du code PL/SQL, et tu y INSERT tes id au sein de la procédure.
    Pour plus d'info la doc, et asktom pour une meilleur compréhension de leur utilisation.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/10/2011, 17h15
  2. [MySQL] une requete dans une requete
    Par Invité dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/08/2011, 09h49
  3. Réponses: 4
    Dernier message: 02/07/2008, 11h32
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Utilisation d'une requete dans une requete update
    Par hellbilly dans le forum Access
    Réponses: 4
    Dernier message: 09/01/2005, 15h09

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