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 :

SQL pass through


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 9
    Points
    9
    Par défaut SQL pass through
    Bonjour tout le monde,

    Après avoir fait des recherches et n'avoir rien trouvé de concluant je me permet de venir poser ma question ici.

    J'aimerais faire une petite batterie de tests et entre autre, créer une table dans une DB oracle via deux méthodes:
    La première avec un libname:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    LIBNAME dblib ORACLE USER=usr PASSWORD="&dbpwd_sas" PATH="DM_CT_TEST" SCHEMA="SAS";
     
    PROC SQL NOPRINT;
      CREATE TABLE dblib.TEST_WIN7 AS SELECT *
        FROM SASHELP.CARS
        WHERE STRIP(UPCASE(make)) EQ "ACURA"
      ;
    QUIT;
     
    LIBNAME dblib CLEAR;
    Cette méthode fonctionne sans problèmes.

    La deuxième méthode que je voudrais utiliser est un SQL pass-through:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROC SQL;
      CONNECT TO ORACLE (USER=usr PASSWORD="&dbpwd_sas" PATH="DM_CT_TEST");
     
      EXECUTE (  CREATE TABLE sas.TEST_WIN7 AS
                 SELECT * FROM SASHELP.CARS 
                 WHERE STRIP(UPCASE(make)) EQ "ACURA"
              )  BY ORACLE;
     
      DISCONNECT FROM ORACLE;
    QUIT;
    avec cette méthode, sashelp.cars n'est pas trouvée par la procédure.

    D'où m'a question: est-il possible de copier une table locale sas dans oracle, via un SQL pass-through?

    Si oui, comment procéder?

    Merci

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Non a priori il faudrait créer un pont entre SAS et ORACLE et c'est par le LIBNAME.
    Autrement, tu peux créer un INSERT INTO avec les valeurs de la table mais je ne vois pas trop l'utilité.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  3. #3
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Il manque commit dans ta requête

    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
    
    proc sql;
     CONNECT TO ORACLE (USER=usr PASSWORD="&dbpwd_sas" PATH="DM_CT_TEST");
     
      EXECUTE (  CREATE TABLE sas.TEST_WIN7 AS
                 SELECT * FROM SASHELP.CARS 
                 WHERE STRIP(UPCASE(make)) EQ "ACURA"
              )  BY ORACLE;
    
        execute (
        commit
      ) by oracle;
    
    DISCONNECT FROM ORACLE;
    QUIT;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    N'importe quoi !

    Déjà pour commencer, SAS fait un commit d'office ( libname, PASSTROUGH). Et en ce qui concerne le problème de base , comme indiqué par Stéphane, Oracle ne peut pas voir les données SAS si on utilise passthrough + EXECUTE .

    EXECUTE signifie travaille 100% dans le SGBD ( ici Oracle).

    Deux solutions possibles :

    1- Libname + (data et ou sql)
    2- passthrough + EXECUTE mais il faut au préalable transférer les données SAS en utilisant (1).
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

Discussions similaires

  1. [AC-2003] Procédure Stockée SQL Server vs SQL Directe (Pass-Through)?
    Par it-worker dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/01/2013, 19h08
  2. [SQL] Pass-Through SQL avec paramètres du code sas
    Par floflo164 dans le forum SAS Base
    Réponses: 4
    Dernier message: 27/08/2012, 13h39
  3. SAS sql pass-through
    Par jgx342 dans le forum Administration et Installation
    Réponses: 4
    Dernier message: 21/09/2010, 16h45
  4. Pass-through avec access 2000
    Par innova dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/02/2007, 09h52
  5. Utilisation de pass-through ?
    Par innova dans le forum Access
    Réponses: 1
    Dernier message: 15/02/2007, 00h00

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