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

Macro Discussion :

Erreur sur clause where


Sujet :

Macro

  1. #1
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut Erreur sur clause where
    Bonjour,
    Je cherche à créer un programme qui affiche certaines observations d'une table.

    Tout se passe bien si je le fait directement, comme dans le programme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc print data=sashelp.class;
       where Name in ('Jane' 'Janet');
    run;
    Si je construit la macro ci-dessous, qui vise à faire la même chose, j'obtiens une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    %macro Essai(Noms,Variable);
       %local ListeNoms;
       %let i=0;
       %do %until (&Nom eq);
          %let i=%eval(&i+1);
          %let Nom=%scan(&Noms, &i);
          %if &Nom eq %then %goto FinBoucle; 
    			%else %let ListeNoms=&ListeNoms %bquote('&Nom');
       %end;
       %FinBoucle : 
    	proc print data=sashelp.class; where &Variable in (&ListeNoms); run;
    %mend Essai;
    %Essai(Jane Janet, Name);
    L'erreur est ERROR: Erreur de syntaxe détectée lors de l'analyse de la clause WHERE
    l'option mprint permet de voir qu'en effet, le programme généré est identique au programme exemple.

    Est-ce que quelqu'un comprend ce qui se passe ?

    Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 99
    Points : 202
    Points
    202
    Par défaut
    Salut!

    Pourquoi un %bquote? (selon moi ça n'a rien à faire là, après mon avis vaut ce qu'il vaut je ne connaissais pas la fonction... )

    Toujours selon moi, il faudrait remplacer :
    %bquote('&Nom');
    par "&Nom";

    Sans ça, ta clause where est exécutée sans quotes ce que SAS n'aime pas... (en passant si tes quotes sont simples, SAS n'aime pas non plus)
    "Statistics is the grammar of science" - K. Pearson

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Essayes ton macro en remplaçant %bquote('&Nom') par %Sysfunc(quote(&Nom)) et ça va tourner correctement.

    Cordialement Ward

  4. #4
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    Citation Envoyé par hossward Voir le message
    Bonjour,
    Essayes ton macro en remplaçant %bquote('&Nom') par %Sysfunc(quote(&Nom)) et ça va tourner correctement.
    Super, ça marche.

    Merci !

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

Discussions similaires

  1. Erreur requête : clause WHERE mal utilisée
    Par anxious dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/03/2010, 02h35
  2. Réponses: 4
    Dernier message: 07/08/2008, 13h31
  3. auto-completion sur clause where
    Par guyrnaf dans le forum Sql Developer
    Réponses: 15
    Dernier message: 22/08/2007, 19h38
  4. [SQL]Action sur clause where
    Par J_Yohan dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 03/04/2007, 10h55
  5. syntaxe SQL sur clause where
    Par fpecastaing dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 12/03/2007, 15h07

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