这里是 SAS 初学者。
简介: 在 SQL Server Management Studio 中,当您尝试创建已存在的对象/表时,会引发错误。所以解决方案是先删除表,然后再创建它。
那么在 SAS 中我怎么可以写这样的东西......(假装示例表存在)
PROC SQL;
CREATE TABLE Example AS
SELECT *
FROM Work.Test;
QUIT;
问题: 即使示例对象/表已经存在,也不会引发错误。有谁知道为什么 SAS 或 SQL Server Management Studio 在这方面有所不同?
最佳答案
SAS 有一个默认值 OPTION REPLACE
,它告诉 SAS 您希望允许这种行为。
如果您想禁用此功能,请设置OPTION NOREPLACE
。然而,正如上面的文档所述,这不会阻止上面的执行,因为它位于 work
库(这是一个临时库)中。
至于原因(为什么事情不同),毫无疑问是由于语言使用方式的历史差异造成的。 SAS 并不是真正的数据库语言(尽管它与数据库语言有很多相同之处,包括内置的 PROC SQL);它也比 SQL Server 早得多(起源于 20 世纪 60 年代,甚至更早的 PL/1 和 PL/2)。 SQL Server 为您提供了许多用于就地更新表的工具; SAS 有许多这样的工具,但由于各种原因,SAS 程序员倾向于替换表而不是就地更新它们。
关于sql - 为什么当我创建已经存在的表时,SAS、Proc SQL 不会抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33443779/