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

SQL Firebird Discussion :

comprendre la clause RETURNING


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut comprendre la clause RETURNING
    Bonjour a tous
    une de mes lectures sur le document Firebird 2.1 Release Notes http://www.firebirdsql.org/rlsnotesh...#rnfb210-rtrng
    ma fait connaitre la Clause RETURNING, j'ai lu mais il faut dire que je ne comprend pas grand chose. il ya aussi des exemples mais j'ai pb de comprehension. alors si quelqu'un étais deja passé par là son aide serait la bien venue
    Merci a tous

  2. #2
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Celà permet de récupérer la valeur d'une colonne (ou plusieurs) lors d'un INSERT par exemple.

    L'interret c'est par exemple de récupérer la valeur d'une colonne calculée dans un trigger ou computed.

    Typiquement réccupérer la clé primaire de l'enregistrement qu'on vient d'insérer.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut
    ok merci pour toutes ces précisions dans la meme cadre (pour ne pas abuser)

    a koi sert la clause MERGE
    MERGE Statement
    Adriano dos Santos Fernandes
    (v.2.1) This syntax has been introduced to enable a record to be either updated or inserted, according to whether or not a stated condition is met. The statement is available in both DSQL and PSQL.

    Syntax Pattern

    <merge statement> ::=
    MERGE
    INTO <table or view> [ [AS] <correlation name> ]
    USING <table or view or derived table> [ [AS] <correlation name> ]
    ON <condition>
    [ <merge when matched> ]
    [ <merge when not matched> ]

    <merge when matched> ::=
    WHEN MATCHED THEN
    UPDATE SET <assignment list>

    <merge when not matched> ::=
    WHEN NOT MATCHED THEN
    INSERT [ <left paren> <column list> <right paren> ]
    VALUES <left paren> <value list> <right paren>

    Rules for MERGE
    At least one of <merge when matched> and <merge when not matched> should be specified

    Neither should be specified more than once.

    Note
    A right join is made between the INTO and USING tables using the condition. UPDATE is called when a matching record exists in the left (INTO) table, otherwise INSERT is called.

    If no record is returned from the join, INSERT is not called.

    Example

    MERGE INTO customers c
    USING (SELECT * FROM customers_delta WHERE id > 10) cd
    ON (c.id = cd.id)
    WHEN MATCHED THEN
    UPDATE SET
    name = cd.name
    WHEN NOT MATCHED THEN
    INSERT (id, name)
    VALUES (cd.id, cd.name)

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Bonjour

    MERGE est une instruction très proche de UPDATE OR INSERT, pour précéder soit à un UPDATE ou un INSERT des enregistrement suivant les conditions WHEN définies.

    @+

  5. #5
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Ca permet de faire une mise a jour ou une insertion suivant une condition.

    L'exemple parle de lui meme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MERGE INTO customers c
    USING (SELECT * FROM customers_delta WHERE id > 10) cd
    ON (c.id = cd.id)
    WHEN MATCHED THEN
    UPDATE SET
    name = cd.name
    WHEN NOT MATCHED THEN
    INSERT (id, name)
    VALUES (cd.id, cd.name)
    On met en relation par le champ ID la table customers c et customers_delta (dont l'ID est plus grand de 10) cd.

    Tous les enregistrements de cd dont l'ID existe dans la table c sera mis à jour (le champ name de cd remplace celui de c)

    Tous les enregistrements de cd dont on n'a pas trouvé l'ID dans la table c sont insérés dans c.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut
    Merci encore pour tout ce que vous faite

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

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. Réponses: 6
    Dernier message: 17/06/2013, 15h23
  3. pb trigger et clause returning
    Par amelo dans le forum Oracle
    Réponses: 8
    Dernier message: 24/01/2011, 15h41
  4. return
    Par drKzs dans le forum C
    Réponses: 3
    Dernier message: 18/09/2003, 22h36
  5. Probleme dans une clause like !
    Par adil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/07/2003, 16h47

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