如何处理SAS中的登录超时

时间:2014-07-14 18:48:31

标签: sas

我有一些从编辑器窗口运行完美的SAS脚本。但是,当我将它用作批处理文件时,有时它会运行,有时则不运行。失败的部分是:

1) libname ... /* I am connecting to a database
2) proc sql ( dsn= ... /* also connecting to a database 

如何编写代码,以便libnameproc sql无法建立连接,然后try again。 。 。像一个循环或什么

libnameproc sql是否有任何可以延长超时时间的选项" dealine" ?

请帮帮我

1 个答案:

答案 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

该代码应该在您的环境中运行,然后您可以根据需要进行修改。