SAS Pass-Through行受到影响

时间:2017-07-24 22:42:48

标签: sas

我正在尝试使用以下SAS代码:

proc sql;
connect to oracle as oracle(&user &pass &path);
  execute(delete from t where x > 1) by oracle;
disconnect from oracle;
quit;

最后我需要在日志文件中打印删除了多少行。

现在我发现了两个宏变量SQLXRCSQLXMSG,但它们只代表返回代码和错误消息。这还不足以得到所需的。

请告知。

由于

1 个答案:

答案 0 :(得分:1)

您可以运行等效查询并在执行删除之前返回结果:

此外,不需要as oracle位,您可以使用as语句中的connect to关键字来指定别名,该别名是引擎的名称({{1默认情况下

oracle
    使用
  1. 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语句将计数打印到输出窗口
  2. NOPRINT语法允许将查询结果返回给SAS会话。
  3. 宏变量select ... from connection to用于存储行计数。 SAS中的c子句后跟INTO表示将结果加载到名为:c的宏变量中。您可以使用c检查值。
  4. &c语句用于将信息返回日志。
  5. 如果表在两个语句的执行之间发生了变化,那么select语句可能不会返回已删除行数的准确计数。