我有一些从编辑器窗口运行完美的SAS脚本。但是,当我将它用作批处理文件时,有时它会运行,有时则不运行。失败的部分是:
1) libname ... /* I am connecting to a database
2) proc sql ( dsn= ... /* also connecting to a database
如何编写代码,以便libname
和proc sql
无法建立连接,然后try again
。 。 。像一个循环或什么
libname
和proc sql
是否有任何可以延长超时时间的选项" dealine" ?
请帮帮我
答案 0 :(得分:3)
我不知道这种方法是否也适用于ODBC libname但我只是使用本地libname测试它并且它工作正常:
data x;
x = "blah";
run;
%macro loop_until_exists;
%local result counter rc;
%let result = %nobs(iDs=leadscor.x,iVerbose=1);
%let counter = 1;
%do %while (&result lt 0); /* YOU MAY WANT TO ADD A TIMEOUT CLAUSE HERE */
%put IT DOESNT EXIST YET =(;
%if &counter = 3 %then %do;
libname leadscor "%sysfunc(pathname(work))";
%end;
%let rc = %sysfunc(sleep(1));
%let result = %nobs(iDs=leadscor.x,iVerbose=1);
%let counter = %eval(&counter + 1);
%end;
%put IT EXISTS =);
%mend;
%loop_until_exists;
请注意,您需要我在帖子中定义的%nobs
宏:https://stackoverflow.com/a/5665758/214994
该代码应该在您的环境中运行,然后您可以根据需要进行修改。