- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hello
Lets say that I want to find all data sets in library R_R that start with name "ALERTSNEG_"
For example: ALERTSNEG_202401 , ALERTSNEG_202402, ALERTSNEG_202403 and so on
Lets say that I want to create a macro var that concatenated these data sets names.
My question:
what is the target of writing the code : %let memlist=_null_;
The code can also run without it.
Can anyone explain what is the benefit of this code?
proc sql noprint ;
%let memlist=_null_;
select catx('.',libname,memname)
into :memlist separated by ' '
from dictionary.members
where libname='R_R'
and (memname like 'ALERTSNEG_%')
;
quit;
%put &memlist;
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
If there's no dataset satisfying the WHERE requirement, PROC SQL would not create the macro variable, causing ERRORs later on when you use it. The %LET avoids this.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Probably just to ensure that memlist does not contain anything from the previous run of the code. It works perfectly fine without it though.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
If there's no dataset satisfying the WHERE requirement, PROC SQL would not create the macro variable, causing ERRORs later on when you use it. The %LET avoids this.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Is it equivalent to write
%let memlist=_null_;
before the proc sql?
%let memlist=_null_;
proc sql noprint ;
select catx('.',libname,memname)
into :memlist separated by ' '
from dictionary.members
where libname='R_R'
and (memname like 'ALERTSNEG_%')
;
quit;
%put &memlist;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
- When are macro statements executed/resolved?
- When does the SQL procedure execute statements, interactively when encountered, or all at once when QUIT; is parsed?