【问题标题】:ORA-00917, missing commaORA-00917,缺少逗号
【发布时间】:2021-02-20 05:56:19
【问题描述】:

我是 SQL 新手,正在学习 DBMS 课程。我们正在将东西插入我们的表中,我终其一生都找不到我缺少逗号的地方。 这门课的教授几乎没有做任何实际的教学,只是把我们介绍给 youtube,所以我们只能靠自己了。如果有人能指出我正确的方向......那就太棒了。 值得注意的是,我们也在将我们的 sql 代码写入 Apex Oracle 网站。

INSERT INTO PROJECTDATA (ProjectID,ProjectName,ProjDeptID,MaxHours,StartDate,EndDate)
VALUES
(901,'Product Plan',3001,135,TO_DATE(10-May-12,'DD-Mon-YYYY'), TO_DATE(15-Sep-12,'DD-Mon-YYYY');

INSERT INTO PROJECTDATA (ProjectID,ProjectName,ProjDeptID,MaxHours,StartDate,EndDate)
VALUES
(902,'Tax Preparation',1001,120,TO_DATE('05/Jul/12','DD-MON-YYYY'), TO_DATE('15/Oct/12','DD-MON-YYYY')```

【问题讨论】:

  • 您使用的是什么版本的 Oracle 服务器?
  • 您确实应该在您的 SQL 查询中添加一些空格,以便它可读。 SQL 对空格不敏感,您可以将 INSERT 语句组件格式化为更具可读性。
  • 我一定会考虑到空白。我什至还没有做任何格式化,只是想确保我的代码本身是正确的。
  • 至于什么版本..我相信它只是最新的?我们登录 apex.oracle.com 网站,它没有提示我们输入版本号

标签: sql


【解决方案1】:

to_date() 接受字符串参数,因此日期文字应该用单引号括起来,例如

TO_DATE('10-May-12','DD-Mon-YYYY')
        ^
        | here

【讨论】:

    【解决方案2】:

    您的查询中缺少右括号。

    试试

    INSERT INTO PROJECTDATA (ProjectID,ProjectName,ProjDeptID,MaxHours,StartDate,EndDate)
    VALUES (901,'Product Plan',3001,135,TO_DATE(10-May-12,'DD-Mon-YYYY'), TO_DATE(15-Sep-12,'DD-Mon-YYYY'));
    

    注意语句末尾的额外右括号 - 您只有一个关闭 TO_DATE 语句的括号。如果没有右括号,它会将以下语句视为第一个查询的一部分 - 导致它给您带来误导性的逗号错误

    【讨论】:

    • 天哪,我是个白痴。我已经盯着这个看了这么久,只是变得如此沮丧。
    • 因此更正了第二组数据,但现在第一组数据抛出“此处不允许列”错误
    • 从头开始。我修好了它。在作业本身中给我们的日期格式是不正确的。稍作调整,我明白了!感谢您指出显而易见的事情!
    • 我确定这根本不是一个有效的查询,因为没有引号的10-may-12 不是有效的 SQL 表达式
    • @VeritasCurat 。 . .此代码根本无法运行。为什么这是公认的答案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2013-10-07
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多