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

fra*_*nts 5 sql sql-server ssms sas

SAS初学者在这里.

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

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

PROC SQL;
    CREATE TABLE Example AS
        SELECT *
        FROM Work.Test;
QUIT;
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*Joe 7

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

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

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