为什么 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 而不是就地更新它们。
这里是 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 而不是就地更新它们。