我正在使用EG4.3中的存储进程创建一个基于HTML的数据字典,运行在Unix上的9.2BI套件上。
我们已经有效地关闭了我们的中间层web服务器,因此这个STP只能在EG内部使用。
使用大量的puts,我在四个存储过程中创建了所需的HTML页面:
由此,用户可以选择库、表或列来深入了解更多详细信息。

第一个STP非常好用,我可以看到一个格式良好的信息列表,包括库、数据集和列链接。
我的问题如下:当我单击一个链接时,我希望运行必要的STP,并将HTML页面返回到与我的初始报告相同的结果选项卡中。
我查阅了无数的sas文章,却找不到答案。
下面是我用来生成指向其他STP的链接的代码(其中chars[i]是数据集中的an值):
/* Get the root session ID*/
hrefroot = symget('_THISSESSION') || '&_PROGRAM=/Shared Data/Team/stored_process/';
/* Get the next stp path (neither ?&_PROGRAM= nor the below seem to work)*/
hrefnextstp = "?_PROGRAM=/Shared Data/Team/stored_process/";
// build up the HTML using puts //
stpval="stpddlibrary";
stplink=cats('<A HREF="', hrefnextstp, stpval, '&type=', chars[i], '">', chars[i],'</A>');
put stplink;考虑到以上所述,我如何使用EG将多个存储进程链接在一起?
没有人认为我不使用网络,所以这就排除了这一点。
我希望我说得很清楚..。
发布于 2014-12-20 09:58:05
您遇到的问题是,HTML页面试图导航到web服务以提取下一个页面。但是,EG不能作为web服务器响应浏览器的请求。
存储的过程代码最好通过web中间层或SAS MS Office插件来使用。如果这两个工具不可用,您可以考虑将逻辑从SAS存储的Proc中移出并直接进入EG,并使用响应来驱动eg项目中的第二个流。如果您想要驱动一个web页面,您可以通过Java和调用sas,并以EG的方式与SAS对话,但在这种情况下,您的UI将是用Java构建的。另一个建议是,尝试使用vbscript通过COM驱动EG。
下面是通过COM:Automation控制EG的链接
您提供的代码可以很好地构建由SAS中间层存储的proc web服务提供的url。存储在SAS存储的proc中,您可以将url构建到中间层,并使用SAS提供的用于存储进程的web接口来指向其他存储过程,以查看参数和url是如何构造的。
如果您的中间层web服务处于联机状态,您也可以在代码中调用存储过程。通过proc http调用它,下面是sas文档中的一个示例:
proc http in=in out=out url="http://localhost.com/rsm/rstool" method="post" ct="application/x-www-form-urlencoded"; run;
https://stackoverflow.com/questions/27173978
复制相似问题