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 :

Requête pour insérer plusieurs valeurs dans une seule colonne


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Requête pour insérer plusieurs valeurs dans une seule colonne
    Bonjour,

    J'aimerais savoir si il y existe une requête qui permet d'insérer plusieurs ligne d'enregistrement dans une seule colonne.

    j'ai fais cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    insert into ABPQMC (cle) values ('1')
     
    insert into ABPQMC (cle) values ('2')
     
    insert into ABPQMC (cle) values ('3')
     
    insert into ABPQMC (cle) values ('4')
     
    insert into ABPQMC (cle) values ('5')
     
    insert into ABPQMC (cle) values ('6')
     
    insert into ABPQMC (cle) values ('7')
    qui marche très bien mais y a-t-il une autre façon de s'y prendre ??

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    En bulk insert.
    Exemple en pl/sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    SQL> create table test ( x number);
    Table created.
     
    SQL>
    SQL> declare
      2   type listOfNumber is table of number;
      3   myList listOfNumber :=listOfNumber(1,2,3,4);
      4  begin
      5   forall i in myList.first..myList.last insert into test(x) values(myList(i));
      6  end;
      7  /
    PL/SQL procedure successfully completed.
     
    SQL>
    SQL> select * from test;
     
             X
    ----------
             1
             2
             3
             4
     
    SQL>
    Cordialement,
    Franck.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci . Et je peux utiliser ce même code(qui j'imagine va demander quelque petite modification) pour insérer des lignes d'enregistrement identiques dans deux colonnes différents?

    Merci d'avance.

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    On peut utiliser un record:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type numbers is record (a number, b number);
    type listOfNumbers IS TABLE of numbers;
    Mais il n'y a pas de syntaxe d'initialisation rapide dans la section declare.
    Ou sinon utiliser un type objet (persistant doncà supprimer lorsque plus utilisé) et l'initialisation est plus lisible:

    SQL> create table test (a number,b number);
    Table created.

    SQL> create type numbers as object (a number,b number)
    2 /
    Type created.

    SQL> declare
    2 type listOfNumbers IS TABLE of numbers;
    3 myList listOfNumbers:=listOfNumbers(
    4 numbers(11,12)
    5 ,numbers(21,22)
    6 );
    7 begin
    8 forall i IN myList.first..myList.last INSERT INTO test(a,b) VALUES(myList(i).a,myList(i).b);
    9 end;
    10 /
    PL/SQL procedure successfully completed.

    SQL> select * from test;
    A B
    ---------- ----------
    11 12
    21 22

    SQL> drop type numbers;
    Type dropped.

    SQL> drop table test;
    Table dropped.

    SQL>
    SQL> exit;
    Cordialement,
    Franck.

  5. #5
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Lirna Voir le message
    ...J'aimerais savoir si il y existe une requete qui permet d'insérer plusieur ligne d'enregistrement dans une seule colonne.
    ...
    Multi table insert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> create table ABPQMC(cle integer)
      2  /
     
    Table created
    SQL> Insert All
      2    Into ABPQMC Values ('1')
      3    Into ABPQMC Values ('2')
      4    Into ABPQMC Values ('3')
      5    Into ABPQMC Values ('4')
      6  Select Null
      7  from dual
      8  /
     
    4 rows inserted
     
    SQL>

  6. #6
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    @mnitu
    A partir de quelle version d'oracle existe cette syntaxe?

  7. #7
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Oracle 9, probablement R2.

  8. #8
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    @mnitu,
    Bien pour peu de données, mais peut être catastrophique avec beaucoup d'inserts (cf plan d'exécution)

  9. #9
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    @pachot
    Pourriez-vous définir beaucoup ?

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci pachot et mnitu vos réponse m'ont beaucoup aider

  11. #11
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Plus simple et plus efficace s'il s'agit bien d'une création simple de valeurs consécutives

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO ABPQMC
      (cle)
      (SELECT LEVEL
      FROM  dual
      CONNECT BY LEVEL < 10 );

  12. #12
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Scriuiw Voir le message
    Plus simple et plus efficace s'il s'agit bien d'une création simple de valeurs consécutives
    ...

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

Discussions similaires

  1. [AC-2007] Probleme pour Concaténer plusieurs enregistrements dans une seule colonne
    Par severik dans le forum Requêtes et SQL.
    Réponses: 23
    Dernier message: 08/11/2017, 15h15
  2. Stocker plusieurs valeurs dans une seule colonne
    Par pitav dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2014, 17h46
  3. Réponses: 11
    Dernier message: 11/07/2014, 11h47
  4. Code pour insérer plusieurs valeurs dans une cellule
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/03/2009, 13h09
  5. Réponses: 2
    Dernier message: 23/04/2007, 00h10

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