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] Insert avec récupération valeur de la cle


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Par défaut [Oracle] Insert avec récupération valeur de la cle
    Bonjours,
    Es-t'il possible est surtout comment faire un INSERT qui puissent me retourner la clé primaire (si le champs n'est pas inserér (cause duplication de clé par exemple))
    MERCI

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Oui c'est possible en utilisant la clause return :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL> create table test_dvp (a number, b varchar2(30));
    Table created.
     
    SQL> variable v_a number
    SQL> variable v_b varchar2(30)
    SQL> insert into test_dvp (a,b) values (1, 'DVP') return a, b into :v_a, :v_b;
    1 row created.
     
    SQL> select :v_a, :v_b from dual;
         :V_A :V_B
    --------- --------------------------------
            1 DVP

  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 me semble que la question etait, suite a une erreur ORA-0001 par example, comment recuperer la valeur de cle en erreur.

    La primitive LOG ERRORS est prevue pour cet usage:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    CREATE SEQUENCE my_seq
    /
    CREATE TABLE my_table1
    (id1             INTEGER
    ,col1            VARCHAR2(4000)
    ,PRIMARY KEY
    (id1))
    /
    CREATE TABLE my_table2
    (ora_err_number$ VARCHAR2(100)
    ,ora_err_mesg$   VARCHAR2(2000)
    ,ora_err_rowid$  ROWID
    ,ora_err_optyp$  VARCHAR2(100)
    ,ora_err_tag$    VARCHAR2(100)
    ,id1             INTEGER
    ,col1            VARCHAR2(4000))
    /
     
    INSERT INTO my_table1 VALUES (my_seq.nextval,'Line1');
    INSERT INTO my_table1 VALUES (my_seq.currval,'Line2') LOG ERRORS INTO my_table2;
     
    COL id1  FOR 99999
    COL col1 FOR A50
    SELECT id1,col1 FROM my_table1
    /
    SELECT id1,col1 FROM my_table2
    /
    DROP TABLE my_table1
    /
    DROP TABLE my_table2
    /
    DROP SEQUENCE my_seq
    /
    Sequence created.


    Table created.


    Table created.


    1 row created.

    INSERT INTO my_table1 VALUES (my_seq.currval,'Line2') LOG ERRORS INTO my_table
    *
    ERROR at line 1:
    ORA-00001: unique constraint (SYSTEM.SYS_C009413) violated



    ID1 COL1
    ------ --------------------------------------------------
    1 Line1

    1 row selected.


    ID1 COL1
    ------ --------------------------------------------------
    1 Line2

    1 row selected.


    Table dropped.


    Table dropped.


    Sequence dropped.

Discussions similaires

  1. [OCILIB] [OCI] Oracle INSERT avec clause RETURNING ROWID
    Par agileone dans le forum Interfaces de programmation
    Réponses: 0
    Dernier message: 01/05/2014, 14h58
  2. [2008R2] Ajout de colonne et insertion avec les valeur d'une autre colonne (ligne+1)
    Par diidouu dans le forum Développement
    Réponses: 3
    Dernier message: 30/04/2013, 15h15
  3. INSERT avec récupération de l'AUTO_INCREMENT
    Par PierreVeuillez dans le forum Requêtes
    Réponses: 11
    Dernier message: 23/02/2012, 14h44
  4. Insert avec des valeurs multiple
    Par zakaria.chafi dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/10/2007, 19h21
  5. [Debutant] Pb avec récupération valeurs des boutons radio
    Par Jibees dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/03/2006, 14h25

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