我认为存储过程没有 ID,但它的位置和名称是唯一的。
用户_PROGRAM 宏变量来确定正在运行的存储过程。它将具有“/SAS 文件夹/存储过程文件夹/存储过程名称”的格式。
存储过程的 A5DF0R0G.B80001L7 ID 之类的东西在运行 IOM 应用程序时很有用,但我认为在确定什么存储过程创建了一些东西以及它当时保存在哪里时,它不会那么有用,所以我会选择“_程序”。
如果您在 ID 之后仍然使用此代码(来源: https: //support.selerity.com.au/entries/23169736-Example-Data-Step-View-of-Stored-Procedures-in-Metadata):
******************************************************************************
* Purpose: Create a dynamic view of Stored Procedures registered in Metadata
* Notes : You must establish a Metadata connection prior to running
******************************************************************************;
data work.stplist(drop=_: label="SAS Stored Process List") / view=work.stplist;
length id $17 _uri name description _modified _created location _location $256;
length created modified 8;
format created modified datetime.;
label id="Metadata ID"
name="Stored Process Name"
description="Description"
location="Folder Location"
created="Created"
modified="Last Modified";
_nobj=1;
_n=1;
call missing(id, _uri, name, description, _modified, _created, _location);
do while(_n le _nobj);
_nobj=metadata_getnobj("omsobj:ClassifierMap?@PublicType='StoredProcess'",_n,_uri);
_rc=metadata_getattr(_uri,"Id",id);
_rc=metadata_getattr(_uri,"Name",name);
_rc=metadata_getattr(_uri,"Desc",description);
_rc=metadata_getattr(_uri,"MetadataCreated",_created);
_rc=metadata_getattr(_uri,"MetadataUpdated",_modified);
created=input(_created,anydtdtm.);
modified=input(_modified,anydtdtm.);
* Get folder object the current STP is in *;
_rc=metadata_getnasn(_uri,"Trees",1,_uri);
* Get folder name the current STP is in *;
_rc=metadata_getattr(_uri,"Name",location);
_tree=1;
* Loop up the folder hierarchy *;
do while (_tree>0);
* Get the parent folder object *;
_tree=metadata_getnasn(_uri,"ParentTree",1,_uri);
if _tree > 0 then do;
* If there was a parent folder, get the name *;
_rc=metadata_getattr(_uri,"Name",_location);
* Construct the path *;
location=catx('/',_location,location);
end;
end; * Folder Hierachy *;
location = '/'||location;
output;
_n=_n+1;
end;
run;
问候, 瓦西里