【问题标题】:SQL error using INSERT INTO to build a table使用 INSERT INTO 建表的 SQL 错误
【发布时间】:2021-06-21 02:29:51
【问题描述】:

我正在尝试使用 INSERT INTO 使用在线教程在 SAS Enterprise Guide 中整理一个表格,但是当我执行与教程相同的操作时会不断出错。可能出了什么问题?

我的代码:

/* Create the table */ 
   CREATE TABLE Summary_1920 (
      Variable VARCHAR(255), 
      Count INT, 
      Percentage FLOAT ); 
/* Create and insert the variable names */
   INSERT INTO Summary_1920 
      (Variable, Count, Percentage)
   VALUES 
      ("Variable1", 100, 90.8),
      ("Variable2", 8, 7.0);

QUIT; 

错误:

28               ("IntName", 100, 90.8),
                                       _
                                       22
                                       200
ERROR 22-322: Syntax error, expecting one of the following: ;, VALUES.  

ERROR 200-322: The symbol is not recognized and will be ignored.

这是我第一次使用 SAS EG/SQL,所以它可能非常明显,但我多年来一直在尝试解决这个问题。感谢您提供任何见解。

【问题讨论】:

    标签: sql sas enterprise-guide


    【解决方案1】:

    有趣。看起来proc sql 不允许您使用单个VALUES 子句插入多行。所以只需使用两个语句:

    INSERT INTO Summary_1920 (Variable, Count, Percentage)
        VALUES ("Variable1", 100, 90.8);
    
    INSERT INTO Summary_1920 (Variable, Count, Percentage)
        VALUES ("Variable2", 8, 7.0);
    

    我认为它还支持在一个语句中使用多个VALUES 子句:

    INSERT INTO Summary_1920 (Variable, Count, Percentage)
        VALUES ("Variable1", 100, 90.8)
        VALUES ("Variable2", 8, 7.0);
    

    这不是 SQL 标准语法,我不熟悉任何其他支持它的数据库。您的逗号版本是标准的——或者至少大多数数据库都支持。

    【讨论】:

    • 谢谢,我没有意识到不同的SQL有不同的规则。我会在那里使用你的第二个子句:)
    【解决方案2】:

    我认为你的 sql 权限有限制,我试过你的代码,它工作正常 This is after the query executed

    • 但是您可以尝试一一插入并检查是否再次遇到错误,请尝试以下操作:

      创建表摘要_1920 ( 变量 VARCHAR(255), 计数INT, 百分比 FLOAT );

    然后也执行这个
    INSERT INTO Summary_1920(变量、计数、百分比) 值(“变量 1”、100、90.8);
    INSERT INTO Summary_1920(变量、计数、百分比) 值(“变量 2”、8、7.0);

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2020-09-02
      • 1970-01-01
      相关资源
      最近更新 更多