mirror of
https://github.com/sasjs/core.git
synced 2025-12-10 22:14:35 +00:00
67 lines
1.6 KiB
SAS
67 lines
1.6 KiB
SAS
/**
|
|
@file mm_gettableid.sas
|
|
@brief Get the metadata id for a particular table
|
|
@details Provide a libref and table name to return the corresponding metadata
|
|
in an output datataset.
|
|
|
|
Usage:
|
|
|
|
- get a table id
|
|
%mm_gettableid(libref=METALIB,ds=SOMETABLE,outds=iwant)
|
|
|
|
@param libref= The libref to search
|
|
@param ds= The input dataset to check
|
|
@param outds= the dataset to create that contains the `tableuri`
|
|
@param mDebug= set to 1 to show debug messages in the log
|
|
|
|
@returns outds dataset containing `tableuri` and `tablename`
|
|
|
|
@version 9.3
|
|
@author Allan Bowe
|
|
|
|
**/
|
|
|
|
%macro mm_gettableid(
|
|
libref=
|
|
,ds=
|
|
,outds=work.mm_gettableid
|
|
,mDebug=0
|
|
)/*/STORE SOURCE*/;
|
|
|
|
%local mD;
|
|
%if &mDebug=1 %then %let mD=;
|
|
%else %let mD=%str(*);
|
|
%&mD.put Executing &sysmacroname..sas;
|
|
%&mD.put _local_;
|
|
|
|
data &outds;
|
|
length uri usingpkguri id type tableuri tablename tmpuri $256;
|
|
call missing(of _all_);
|
|
keep tableuri tablename;
|
|
n=1;
|
|
rc=0;
|
|
if metadata_getnobj("omsobj:SASLibrary?@Libref='&libref'",n,uri)<1 then do;
|
|
put "Library &libref not found";
|
|
stop;
|
|
end;
|
|
&mD.putlog "uri is " uri;
|
|
if metadata_getnasn(uri, "UsingPackages", 1, usingpkguri)>0 then do;
|
|
rc=metadata_resolve(usingpkguri,type,id);
|
|
&mD.putlog "Type is " type;
|
|
end;
|
|
|
|
if type='DatabaseSchema' then tmpuri=usingpkguri;
|
|
else tmpuri=uri;
|
|
|
|
t=1;
|
|
do while(metadata_getnasn(tmpuri, "Tables", t, tableuri)>0);
|
|
t+1;
|
|
rc= metadata_getattr(tableuri, "Name", tablename);
|
|
&mD.putlog "Table is " tablename;
|
|
if upcase(tablename)="%upcase(&ds)" then do;
|
|
output;
|
|
end;
|
|
end;
|
|
run;
|
|
|
|
%mend; |