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

SAS Base Discussion :

[ORACLE] Data update VS proc sql update [SQL]


Sujet :

SAS Base

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 31
    Points : 29
    Points
    29
    Par défaut [ORACLE] Data update VS proc sql update
    Bonjour,

    Quelqu'un connais l’équivalent en proc sql update de ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    data master
    update master new;
    by var1 var2
    run;
    Cette façon de faire à pour avantage de mettre a jour la table master pour les valeurs égale dans les 2 tables à var1 var2 (préalablement les tables sont triées par var1 var2)
    et ajoute les nouvelles valeurs.

    Je ne vois pas d’équivalent en proc sql update ?
    j'en ai besoin car, je met à jour des tables sous oracle, et Oracle n'autorise pas le data update...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Japon

    Informations forums :
    Inscription : Janvier 2008
    Messages : 36
    Points : 331
    Points
    331
    Par défaut
    Bonjour,

    Deux solutions existent :

    En pur SAS, tu dois dupliquer les lignes de set pour chaque variable à mettre à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    proc sql ;
       update master 
       set val1 = (select new.val1 from new where master.var1 = new.var1 and master.var2 = new.var2), 
           val2 = (select new.val2 from new where master.var1 = new.var1 and master.var2 = new.var2)
    ;
    quit ;
    ou en faisant du pass-trough en appelant du pur code Oracle :
    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
     
    proc sql ;
       connect to oracle ( <info_de_connections> ) ;
       execute (
           UPDATE master
             SET ( master.val1, master.val2 ) =
                 ( SELECT new.val1, new.val2
                   FROM new
                   WHERE new.var1 = master.var1 and
                         new.var2 = master.var2 )
                 )
             WHERE EXISTS
             ( SELECT new.val1, new.val2
               FROM new
               WHERE new.var1 = master.var1 and
                     new.var2 = master.var2
             )
          ) by oracle ;
     
       disconnect from oracle ;
     
    quit ;
    Timarsu.

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

Discussions similaires

  1. Problème avec Proc Sql Update
    Par aminao dans le forum Macro
    Réponses: 5
    Dernier message: 15/11/2011, 16h48
  2. [SQL] Proc SQL update avec double lien
    Par GuillaumePr dans le forum SAS Base
    Réponses: 5
    Dernier message: 17/06/2010, 14h33
  3. Convertir un data merge en proc sql
    Par jgx342 dans le forum SAS Base
    Réponses: 2
    Dernier message: 22/02/2010, 10h07
  4. [SQL] UPDATE qui veut pas updater ma base
    Par Weysan dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/08/2007, 18h44
  5. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59

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