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 :

table DUAL et l'instruction INSERT


Sujet :

Oracle

  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 16
    Par défaut table DUAL et l'instruction INSERT
    Bonjour tout le monde

    lorsqu'on veut ajouter plusieurs lignes par l'intermédiaire de l'instruction INSERT on utilise aussi une ligne d'instruction pour la table DUAL

    ==> Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Insert all
    into ma_table (col1,col2) values ('aa',33)
    into ma_table (col1,col2) values ('bb',44)
    into ma_table (col1,col2) values ('cc',55)
    into ma_table (col1,col2) values ('ff',55)
    select 1 from dual;
    1-j'aimerai bien savoir pourquoi dans la multi-insertion des lignes il faut utiliser la table Dual
    2-en général à quoi sert la table "Dual"
    3-et pourquoi on a sélectionné 1 dans la table dual

    Merci d'avance

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    1) La syntaxe d'un insert multi-table impose une sous interrogation:
    multi_table_insert
    In a multitable insert, you insert computed rows derived from the rows returned from the evaluation of a subquery into one or more tables.
    2) Fournir une table pour une interrogation SQL là, où cette table n'existe pas. Exemple:
    ne compile pas en SQL (Oracle). Solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select 2 + 2 from dual
    Et derriere il y a bien d'autres trucs possible comme dans votre exemple.


    1) indique qu'il faut une sous-interrogation. 2) dit qu'on peut s'appuyer sur la table dual quand on a besoin d'une table pour construire une interrogation. Et donc 3) on prend 1 mais on pourait assez bien utiliser NULL, 10 ou bien 'n'importe quoi' pour écrire la sous interrogation.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Je compléterai la réponse de mnitu en précisant qu'utiliser un INSERT ALL pour écrire dans les mêmes colonnes de la même table c'est inutile.

    Votre requête peut s'écrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO ma_table (col1,col2) VALUES ('aa',33);
    INSERT INTO ma_table (col1,col2) VALUES ('bb',44);
    INSERT INTO ma_table (col1,col2) VALUES ('cc',55);
    INSERT INTO ma_table (col1,col2) VALUES ('ff',55);
    Ou si vous ne voulez qu'un seul ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO ma_table (col1,col2)
    select 'aa', 33 from dual union all
    select 'bb', 44 from dual union all
    select 'cc', 55 from dual union all
    select 'ff', 55 from dual;

  4. #4
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 16
    Par défaut
    Merci infiniment MNITU pour votre explication qui est bien détaillée maintenant tout est claire pour moi, et merci WALDAR pour votre exemple qu'il sera vraiment utile pour moi

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/11/2007, 18h05
  2. Réponses: 7
    Dernier message: 30/03/2006, 08h49
  3. PB Instruction INSERT
    Par tissard dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/12/2005, 13h18
  4. table not in edit or insert mode !
    Par freud dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/12/2003, 23h18
  5. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 17h23

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