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 :

[Oracle 10g]Insertion multiple, oracle 10g


Sujet :

Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut [Oracle 10g]Insertion multiple, oracle 10g
    Bonjour,

    Je cherche à faire des insertions multiples mais je n'y arrive pas. J'ai essayer toutes les formes que j'ai trouvé sur le net, et dans le tuto SQL (http://sqlpro.developpez.com/cours/sqlaz/dml/#L1.2) mais rien n'y fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DROP TABLE toto;
     
    CREATE TABLE toto(
    	nom VARCHAR2(20),
    	age NUMBER(2)
    );
     
    INSERT INTO toto (nom,age) VALUES ('jean',2), ('martin',3);
     
     
    INSERT INTO toto (nom,age) VALUES ('jean',2,'martin',3);
    Voilà si vous pouviez m'aiguiller

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    L'exemple donné ne fonctionne pas avec Oracle.
    Avec Oracle, il faut utiliser la fonctionnalité BULK COLLECT qui est différente. Voir chapitre 11 de:

    Oracle® Database PL/SQL User's Guide and Reference
    10g Release 2 (10.2)
    Part Number B14261-01

  3. #3
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Il s'agit des fonctions Bulk SQL; dans le detail, BULK COLLECT en query et FORALL pour les manipulations en INSERT, UPDATE, DELETE.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    hummm j'ai regardé le chapitre 11 du manuel, mais j'ai l'impression que c'est fait pour faire des manipulations sur des données déjà dans la BDD, je me trompe ?

    Moi je suis dans le cas où je génère un script avec tout plein d'insert dedans, donc je vois pas trop comment faire :

  5. #5
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Il suffit d'alimenter un tableau sous PL/SQL avant d'executer le FORALL INSERT.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE
    TYPE my_type ...
    my_variable  my_type;
     
    BEGIN
    my_variable(1).colonne1 := '<>';
    my_variable(1).colonne2 := '<>';
     
    ...
     
    FORALL ... INSERT
    ...
    END;
    Reste a voir si cela est utile et n'est pas overkill dans le contexte. Le simple fait de pouvoir charger des donnees a travers un script SQL*Plus signifie que le nombre de ces donnees a charger est faible, reduisant l'interet du Bulk.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    D'accord.

    Certes le nombre de données n'est pas énorme, y'a grand maximum 20 000 tuples sur 3 relations mais c'est pénible d'attendre 3 minutes


    Sinon j'ai beau chercher, c'est quoi la définition d'overkill ?

  7. #7
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Quelque chose du style probablement- utiliser un elephant pour ecraser une mouche.

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/10/2009, 09h59
  2. Oracle 10g : Insertion de données de type UTF-8
    Par Darcynette dans le forum Administration
    Réponses: 4
    Dernier message: 07/08/2008, 15h58
  3. [Débutant] Insertions sous Oracle Enterprise Manager 10g
    Par Raumsog dans le forum Administration
    Réponses: 7
    Dernier message: 18/12/2007, 09h27
  4. Oracle forms 10g insertion dans un tableau
    Par groy1 dans le forum Forms
    Réponses: 4
    Dernier message: 29/10/2007, 12h21
  5. [Oracle 10g]INSERT SELECT lent
    Par Giill dans le forum Oracle
    Réponses: 2
    Dernier message: 22/05/2006, 17h18

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