3

如果输入后结果为空,我正在尝试显示一条消息或另一个带有空记录的表。

请参阅以下代码:

%if (&number ne) %then %do;

Proc print data=Lib.table;

Var “number”n “name”n “age”n;

Where “number”n=“&number”;

Run;

%end;

输入为数字 此代码用于存储过程

解决方案 这是对我有用的解决方案。

%if (&number ne) %then %do; 

    Proc print data=Lib.table; 
        Var “number”n “name”n “age”n; 
        Where “number”n=“&number”; 
    Run; 

    Proc sql; 
        Select case  
                   when count()=0 then “No record found” 
                   Else put (count()),11.) 
               End as Number_of_records 
        From Lib.table 
        where 'number'n="&number"; 
    Quit; 

%end;
4

1 回答 1

1

如果该值存在,您可以检查该表,如果不存在,则显示proc print它为空的说法。

%STPBEGIN;

    %if(&number. NE) %then %do;

        proc sql;
            select count(*)
            from table
            where number = &number.
            ;
       quit;

        %if(&sqlobs. = 0) %then %do;
            data message;
                msg = 'No values were returned.';
            run;
    
            proc print data=message;
            run;
        %end;

    %end;

%STPEND;

为此,您的 STP 结果功能需要设置为“流”。

在此处输入图像描述

请注意,您还可以将 HTML 写入特殊的 fileref_webout以显示消息。如果您这样做,请勿使用 %STPBEGIN/%STPEND 宏将 STP 括起来,否则_webout将被写锁定。例如:

data _null_;
    infile datalines;
    file _webout; 

    put _INFILE_;

    datalines4;
<html>
    No data was returned.
</html>
;;;;
run;
于 2021-09-16T13:05:58.827 回答