【问题标题】:ORA-00907: missing right parenthesis (With Examples)ORA-00907: 缺少右括号(带有示例)
【发布时间】:2015-05-30 16:59:28
【问题描述】:

我正在尝试在 SQL 中创建此表。

CREATE TABLE Orders (
    order_id int(10) NOT NULL,
    order_date date NOT NULL,
    total_value varchar(250) DEFAULT NULL,
    order_status varchar(250) DEFAULT NULL,
    payment_type_id int(10) NOT NULL,
    delivery_id int(10) DEFAULT NULL,
    store_id int(10) NOT NULL,
    staff_id int(10) DEFAULT NULL,
    client_id int(10) NOT NULL,
    sale_type_id int(10) NOT NULL
);

我给了我 [Err] ORA-00907: 缺少右括号

我真的不知道为什么。我已经搜索了很多,我放了这个例子:

CREATE TABLE suppliers (
    supplier_id number(10) NOT NULL,
    supplier_name varchar2(50) NOT NULL,
    contact_name varchar2(50)
);

而且它有效!但是和我的一样,为什么会报这个错误呢?

【问题讨论】:

  • 因为和你的不一样。它不包括具有宽度的 int 列的定义(这是不正确的),也不包括不必要的 DEFAULT NULL 约束(这是不必要的,因为没有分配值的列的自动默认值是NULL,所以你不需要指定它)。

标签: sql oracle


【解决方案1】:

您不必定义 int 的长度。删除 (10)

CREATE TABLE Orders (
order_id int NOT NULL,
order_date date NOT NULL,
total_value varchar(250) DEFAULT NULL,
order_status varchar(250) DEFAULT NULL,
payment_type_id int NOT NULL,
delivery_id int DEFAULT NULL,
store_id int NOT NULL,
staff_id int DEFAULT NULL,
client_id int NOT NULL,
sale_type_id int NOT NULL
);

SQL FIDDLE DEMO

【讨论】:

    【解决方案2】:

    从所有整数中删除 (10),或将其全部更改为 number(10),就像这样

    CREATE TABLE Orders (
    order_id int NOT NULL,
    order_date date NOT NULL,
    total_value varchar(250) DEFAULT NULL,
    order_status varchar(250) DEFAULT NULL,
    payment_type_id int NOT NULL,
    delivery_id int DEFAULT NULL,
    store_id int NOT NULL,
    staff_id int DEFAULT NULL,
    client_id int NOT NULL,
    sale_type_id int NOT NULL
    );
    

    【讨论】:

    • 您还没有从所有整数中删除 (10)。只需从我的答案中复制粘贴代码部分即可。
    猜你喜欢
    • 2018-05-23
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多