我正在尝试使用以下SAS代码:
proc sql;
connect to oracle as oracle(&user &pass &path);
execute(delete from t where x > 1) by oracle;
disconnect from oracle;
quit;
最后我需要在日志文件中打印删除了多少行。
现在我发现了两个宏变量SQLXRC
和SQLXMSG
,但它们只代表返回代码和错误消息。这还不足以得到所需的。
请告知。
由于
答案 0 :(得分:1)
您可以运行等效查询并在执行删除之前返回结果:
此外,不需要as oracle
位,您可以使用as
语句中的connect to
关键字来指定别名,该别名是引擎的名称({{1默认情况下
oracle
proc sql noprint;
connect to oracle (&user &pass &path);
select c into :ct from connection to oracle (select count(*) as c from t where x > 1);
%PUT NOTE: There are &c rows in t where x > 1;
execute(delete from t where x > 1) by oracle;
%PUT NOTE: I deleted &c rows from t;
disconnect from oracle;
quit;
因为否则select语句将计数打印到输出窗口NOPRINT
语法允许将查询结果返回给SAS会话。select ... from connection to
用于存储行计数。 SAS中的c
子句后跟INTO
表示将结果加载到名为:c
的宏变量中。您可以使用c
检查值。&c
语句用于将信息返回日志。如果表在两个语句的执行之间发生了变化,那么select语句可能不会返回已删除行数的准确计数。