Oracle SQL中的“缺少右括号”错误是什么意思

时间:2018-11-23 19:05:47

标签: sql oracle oracle11g oracle-sqldeveloper

我正在尝试运行此代码,对我来说似乎是正确的,但我收到一条错误消息,指出缺少右括号。

代码如下:

CREATE TABLE CUSTOMER
(
    CUSTOMER_ID     INT NOT NULL,
    NAME            VARCHAR(30) NOT NULL,
    DATE_OF_BIRTH   DATE,
    PHONE_NB        CHAR(8) NOT NULL,
    ADDRESS         VARCHAR(50),
    TOTAL_SPENDING  FLOAT NOT NULL DEFAULT 0.0,

    PRIMARY KEY(CUSTOMER_ID)
);

有人可以帮助我解决我的问题吗?

2 个答案:

答案 0 :(得分:2)

自从您标记了SQL Developer ...

...该工具会尝试提示您,甚至在您单击执行按钮之前都会出现问题

enter image description here

该列的默认值会使解析器感到困惑,因为此时不希望使用它。

将其移动到数据类型之后,您会很好

python 1.py &
python 2.py &

PS在oracle中,使用VARCHAR2,而不是VARCHAR。尽管VARCHAR可以“工作”,但它是保留的,可能在将来的版本中有所不同。

答案 1 :(得分:0)

您使用的列定义子句顺序错误:约束(NOT NULL)应该遵循默认值。

这是正确的方法:

CREATE TABLE CUSTOMER
(
    CUSTOMER_ID     INT NOT NULL,
    NAME            VARCHAR(30) NOT NULL,
    DATE_OF_BIRTH   DATE,
    PHONE_NB        CHAR(8) NOT NULL,
    ADDRESS         VARCHAR(50),
    TOTAL_SPENDING  FLOAT DEFAULT 0.0 NOT NULL ,

    PRIMARY KEY(CUSTOMER_ID)
);