BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
StaticFX
Obsidian | Level 7

Is it possible to pass in a Where? like...

 

%macro test(where);

proc sql;
   create table temp as
   select field1, field2 from tableA where &where;
quit;

%mend test;

%test("ap_period='1234'")
1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

Yes, but slightly easier if you use WHERE =

 

e.g

 

%macro test(where=);

proc sql;
   create table temp as
   select name, age from sashelp.class where &where;
quit;

%mend test;

%test(where= age=15);

@StaticFX wrote:

Is it possible to pass in a Where? like...

 

%macro test(where);

proc sql;
   create table temp as
   select field1, field2 from tableA where &where;
quit;

%mend test;

%test("ap_period='1234'")

 

View solution in original post

5 REPLIES 5
AhmedAl_Attar
Ammonite | Level 13
Yes, but you will need to change your SQL into
where %unquote(&where);
StaticFX
Obsidian | Level 7

that simple?

lol guess i shouldve tried it first! Thanks! testing now

Reeza
Super User

Yes, but slightly easier if you use WHERE =

 

e.g

 

%macro test(where=);

proc sql;
   create table temp as
   select name, age from sashelp.class where &where;
quit;

%mend test;

%test(where= age=15);

@StaticFX wrote:

Is it possible to pass in a Where? like...

 

%macro test(where);

proc sql;
   create table temp as
   select field1, field2 from tableA where &where;
quit;

%mend test;

%test("ap_period='1234'")

 

StaticFX
Obsidian | Level 7

Bingo! the first way didnt quite work.. this works perfectly thanks!!

Tom
Super User Tom
Super User

Just wrap your condition inside of parentheses instead of quotes.  

%test((ap_period='1234'))

Also note that you can use named parameters in the macro call, even if the macro has it defined as a positional argument. 

You just can't try to pass a value by position when the parameter is defined as named in the %macro statement.

%test(where=ap_period='1234')

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 962 views
  • 4 likes
  • 4 in conversation