Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2011, 10h59   #1
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Par défaut Requête avec LIKE

Bonjour à tous,
J'ai un problème particulièrement "costaud". En tout cas, je ne vois ce qui ne va pas.

Je dois faire fonctionner une requête avec un Like dans un data. Mais voilà, j'ai l'impression que ma macro n'est pas prise en compte.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
%let id = 'a';
 
// Ne fonctionne pas 
DATA test;
	SET LIBORA.MA_VUE;
	WHERE label LIKE "&processId.%";
run;
 
// Fonctionne 
DATA test;
	SET LIBORA.MA_VUE;
	WHERE label LIKE "a%";
run;
 
DATA test2;
	SET LIBORA.MA_VUE;
run;
 
//Une requête qui fonctionne très bien avec la macro
DATA _null_;
	file _webout;
	SET test2;
	WHERE process_id = &processId.;
run;
Est-ce que quelqu'un pourrait m'éclairer sur ce que je ne fais pas bien?

Merci beaucoup pour vos réponses.
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 11h09   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Bonjour.
Quand je fais un test, ça fonctionne correctement.
Code :
1
2
3
4
5
%LET processId = B ;
DATA work.test ;
  SET sashelp.class ;
  WHERE name LIKE "&processId.%" ;
RUN ;
Alors je te propose de vérifier les points suivants :
  • dans ton vrai code, est-ce que tu as des guillemets " ou des apostrophes ' autour de la valeur ? Les apostrophes bloquent la résolution des macro-variables
  • dans la valeur de ta macro-variable, n'as-tu pas un souci de majuscules ou minuscules ?
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 11h10   #3
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
et ca te mets quoi dans ta log pour

Code :
1
2
3
4
DATA test;
	SET LIBORA.MA_VUE;
	WHERE label LIKE "&processId.%";
run;
y a-t-il une différence dans la log avec le code sans macro variable?
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 11h18   #4
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Merci Olivier,
Je viens de résoudre le problème.

Il faut que je retire les simples quotes lorsque j'ai déclare mon %let.

Merci encore pour vos contributions.
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h01.


 
 
 
 
Partenaires

Hébergement Web