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 :

UPDATE dans table


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut UPDATE dans table
    Bonjour ,

    je n'ai aucune connaissance en PL/SQL mais là je suis obligé de passer par là....

    j'ai deux tables

    ma premiere TMP_FILTRE_ABONNE2 a


    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
      NUMABO  NUMBER(10),
      MODE_EXPEDITION VARCHAR2 (32 BYTE),
      EDITION CHAR(3 BYTE),
      CODSOC CHAR(2 BYTE),
      CODTIT CHAR(2 BYTE),
      NUMERO_CONTRAT NUMBER(10),
      DATE_DEBUT_CONTRAT  DATE,
      ANNEE_DEBUT_CONTRAT CHAR(4 BYTE),
      NB_JOURS_ANC_1ER_CONTRAT NUMBER(10),
      TYPE_CONTRAT VARCHAR2(32 BYTE),
      CONTRAT VARCHAR2(32 BYTE) ,
      CODE_CONTRAT CHAR(3 BYTE),
      LIBELLE_OPTION VARCHAR2(32 BYTE),
      MOTIF_FIN_CONTRAT VARCHAR2(32 BYTE),
      DATE_FIN_DISTRIB_ECHU DATE,
      MOIS_ANNULATION VARCHAR2(32 BYTE),
      FIN_DISTRIBUTION VARCHAR2(32 BYTE),
      MODE_EXPEDITION_ANT VARCHAR2 (32 BYTE),
      CONTRAT_ANT VARCHAR2(32 BYTE),
      CODE_CONTRAT_ANT CHAR(3BYTE),
      OPTION_OFF_ANT  NUMBER(5),
      LIBELLE_OPTION_ANT VARCHAR2(32 BYTE),
      NB_JOURS_CTR_ANT_ANN_NEW_CTR NUMBER(10),
      MOTIF_FIN_CONTRAT_ANT VARCHAR2(32 BYTE),
      MOIS_ANNULATION_CTR_ANN VARCHAR(32 BYTE)
    ma deuxième IC160 b dont voici une partie des champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      CODSOC  CHAR(2 BYTE)                          NOT NULL,
      CODTIT  CHAR(2 BYTE)                          NOT NULL,
      CODOFF  CHAR(3 BYTE)                          NOT NULL,
      OPT     NUMBER(5)                             NOT NULL,
      LIBOPT  VARCHAR2(32 BYTE),
    je dois UPDATER LIBELLE_OPTION_ANT par LIBOPT en sachant que a.CODSOC=b.CODSOC AND a.CODTIT=b.CODTIT AND a.CODE_CONTRAT_ANT=b.CODOFF AND a.OPTION_OFF_ANT =b.OPT

    le problème c'est que dans ma table a j'ai plusieurs fois les clés CODSOC,CODTIT,CODE_CONTRAT,OPTION_OFF_ANT car ce ne sont pas des clefs ma seule façon serait de faire une boucle pour récupérer le NUMABO qui est une clé unique avec CODTIT et CODSOC aller chercher ma LIBOPT pour faire un UPDATE dans LA LIGNE CORRESPONDANTE NUMABO,CODSOC,CODTIT
    comment faire ça en pl/sql si quelqu'un peut m'aider

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Pas besoin de PL/SQL, MERGE devrait faire l'affaire :
    merge enhancements in 10g

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut
    Malheureusement non tout le reste je l'ai fait avec merge et la plupart du temps cela fonctionne, dans mon dans la table IC160 je n'ai pas de relation de clef unique NUmabo.

  4. #4
    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
    Utilisez Merge. Pour la source des données faite une jointure entre les deux tables pour récupérer votre clé.

Discussions similaires

  1. [MySQL-5.5] Créer une ligne avec un update dans table jointe
    Par Leduc08 dans le forum Requêtes
    Réponses: 0
    Dernier message: 03/07/2013, 16h18
  2. insert/update très massifs dans table de 50 M de record.
    Par nuggets dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/07/2006, 16h41
  3. update simultané de plusieur lignes dans table
    Par jarod_bx dans le forum Access
    Réponses: 2
    Dernier message: 22/12/2005, 22h13
  4. [update]deux tables dans la requete
    Par thief dans le forum Oracle
    Réponses: 2
    Dernier message: 02/09/2005, 16h45
  5. Commande Update... vider certains champ dans table.
    Par angelevil dans le forum ASP
    Réponses: 3
    Dernier message: 04/05/2005, 21h08

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