【问题标题】:SQL: Missing right parenthesisSQL:缺少右括号
【发布时间】:2019-12-07 03:25:48
【问题描述】:

我在创建新的 Oracle 表时遇到了很多问题。它已经从一个错误变为另一个错误。

这可能是最后一期了。

我正在尝试为什么此表给出错误 ORA-00907:缺少右括号:

CREATE TABLE rental
    ( rental_id        CHAR(8)
    , overdue_cost     INTEGER(10,2)
    , days_checked_out INTEGER(10,0)
    )

【问题讨论】:

  • 我在其他表格中使用相同的语法。你是说它们不起作用?
  • 您在 Oracle 手册中的什么地方找到了 integer(10,2) 语法? docs.oracle.com/cd/E11882_01/server.112/e41084/…
  • 它是学校课程补充文本提供给我的。但不是我看过它。我读错了。它说数字不是整数。所以我一直用错名字而不自知。

标签: sql oracle


【解决方案1】:

Oracle INTEGER 类型既不允许 precision 也不允许 scale
其实Oracle的INTEGERNUMBER(38, 0)基本一样。

在您的情况下,您可以通过两种方式更改 overdue_costdays_checked_out 的定义:

  1. 将它们定义为INTEGERS,但不要使用presision/scale

    overdue_cost     INTEGER,    
    days_checked_out INTEGER
    
  2. 将它们定义为 NUMBER(10, 0) - 首选,因为其中一个字段具有非零 scale

    overdue_cost     NUMBER(10, 0),    
    days_checked_out NUMBER(10, 2)
    

【讨论】:

  • 是的,我的错。事实上INTEGER 也不允许精确。编辑了我的答案。您可以在sqlfiddle.com 上试用您的代码。
  • 现在这似乎有所作为
猜你喜欢
  • 2012-11-01
  • 1970-01-01
  • 2018-09-29
  • 2018-10-23
  • 2016-10-23
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
相关资源
最近更新 更多