【问题标题】:How come SAS, Proc SQL, doesn't throw an error when I CREATE already existing tables当我创建已经存在的表时,SAS、Proc SQL 怎么不会抛出错误
【发布时间】:2015-10-30 19:44:36
【问题描述】:

这里是 SAS 初学者。

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

那么在 SAS 中我怎么能写出这样的东西……(假装 Example 表存在)

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

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

【问题讨论】:

  • 您可能连接到不同的schema,并且该表不存在。 Work 模式在你的情况下

标签: sql sql-server sas ssms


【解决方案1】:

SAS 有一个默认的OPTION REPLACE,它告诉 SAS 您希望允许这种行为。

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

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

【讨论】:

  • 我不知道 OP 是否正在创建工作表,但可能值得注意的是,指向您提供的文档的链接确实显示“此选项对数据集没有影响WORK 库..."。
  • @Amir 好点;这应该是明确的(尽管看起来很明显)。已更新。
猜你喜欢
  • 2023-04-02
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多