WRT“运行”与“退出”:
一些 SAS 程序支持称为“运行组处理”的东西,这意味着程序在看到“运行”时执行它被要求执行的任何工作;陈述。该过程继续执行,直到它看到“quit:”statemnet。事实上,一个“退出”;语句会自动插入一个“run;” 声明是否还有工作要做。
PROC DATASETS 是这些过程之一。“退出;” 声明说程序没有更多的工作要做。考虑这个简单的例子:
proc datasets;
change a=new_a;
run;
delete new_a;
run;
quit;
第一条语句(更改)将现有数据集“a”重命名为“new_a”。第二条语句将删除该数据集。如果您未能包含“运行”;在此示例中的语句(在“更改”之后),该过程将失败,因为它会注意到“new_a”数据集不存在,因此不会执行任何一条语句。
也就是说,我自己很少使用 PROC DATASETS。我更喜欢使用 PROC SQL。
WRT:PROC DELETE 与 DROP TABLE 与 PROC SQL:
尽管 PROC DELETE 已正式“弃用”,但这意味着它将不再更改。从 SAS 库中删除数据对象是一个简单的过程;我用它所有的时间。与 PROC SQL 相比,它有一个特殊的优势。如果您使用 PROC DELETE 尝试删除不存在的数据集,您只会在日志中收到警告消息。但是,如果您尝试从 SQL 中执行 DROP TABLE 语句,您将收到错误并且您的 SQL 步骤将停止。在我的 ETL 脚本中创建加载到 Teradata 和 Oracle 等外部数据库的新表时,我一直使用 PROC DELETE。
啰嗦,我知道,但我希望这会有所帮助。
鲍勃