为什么 SAS,Proc SQL,在我创建已经存在的表时不会抛出错误

How come SAS, Proc SQL, doesn't throw an error when I CREATE already existing tables

这里是 SAS 初学者。

简介: 在 SQL Server Management Studio 中,当您尝试创建已存在的 object/table 时会抛出错误。所以解决方案是先删除 table 然后创建它。

那么在 SAS 中我怎么能写出这样的东西...(假装示例 table 存在)

PROC SQL;
    CREATE TABLE Example AS
        SELECT *
        FROM Work.Test;
QUIT;

问题: 即使示例 object/table 已经存在,也不会抛出任何错误。有谁知道为什么 SAS 或 SQL Server Management Studio 在这方面有所不同?

SAS 有一个默认值 OPTION REPLACE,它告诉 SAS 您愿意允许这种行为。

如果您想禁用此功能,请设置OPTION NOREPLACE。正如上面的文档所述,这不会阻止上面的执行,但是,因为它在 work 库(这是一个临时库)中。

至于为什么(为什么不同),这无疑是由于语言使用方式的历史差异。 SAS 并不是真正的数据库语言(尽管它与它们有很多相似之处,包括内置的 PROC SQL);它也比 SQL 服务器(起源于 1960 年代,甚至更早于 PL/1 和 PL/2)老得多。 SQL 服务器为您提供了很多用于更新 table 的工具; SAS 有许多这样的工具,但出于各种原因,SAS 程序员倾向于替换 table 而不是就地更新它们。