为什么SAS,Proc SQL,在创建现有表时不会抛出错误

时间:2015-10-30 19:44:36

标签: sql sql-server sas ssms

SAS初学者。

INTRO: 在SQL Server Management Studio中,当您尝试创建已存在的对象/表时,会引发错误。所以解决方案是首先DROP表,然后创建它。

那么SAS怎么来我写这样的东西......(假装示例表存在)

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

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

1 个答案:

答案 0 :(得分:7)

SAS有一个默认OPTION REPLACE,告诉SAS您希望允许此行为。

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

至于为什么(为什么会有所不同),这无疑是由于语言的使用方式存在历史差异。 SAS实际上并不是一种数据库语言(虽然它与它们共享很多,包括内置的PROC SQL);它也比SQL Server大得多(起源于20世纪60年代,甚至在PL / 1和PL / 2之前)。 SQL Server为您提供了许多用于更新表的工具; SAS有许多这样的工具,但由于各种原因,SAS程序员倾向于替换表而不是更新它们。