在Oracle中如何清除缺失的括号错误?

时间:2019-05-25 06:26:59

标签: sql oracle

CREATE TABLE Bill( 
    BillNo INTEGER PRIMARY KEY,
    StoreName VARCHAR2(20) FOREIGN KEY,
    Shopperid INTEGER FOREIGN KEY,
    ArCode CHAR(5) FOREIGN KEY,
    Amount INTEGER,
    BillDate DATE,
    Quantity NUMBER(4) Default 1 Check (Quantity>0)
);

我正在丢失括号错误。有人帮我编写代码吗?

3 个答案:

答案 0 :(得分:1)

MySQL中的错误是:

  

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在'VARCHAR2(20)FOREIGN KEY附近使用,       Shopperid整数外键,       第3行的ArCode CHAR(5)'

另一方面,Oracle中的错误是:

  

ORA-00907:缺少右括号

因此,我得出结论,您正在使用Oracle。解决方法是删除外键引用:

CREATE TABLE Bill ( 
    BillNo INTEGER PRIMARY KEY,
    StoreName VARCHAR2(20) ,
    Shopperid INTEGER,
    ArCode CHAR(5),
    Amount INTEGER,
    BillDate DATE,
    Quantity NUMBER(4) Default 1 Check (Quantity>0)
);

如果要使用外键引用,则它们可能类似于:

CREATE TABLE Bills ( 
    BillNo INTEGER PRIMARY KEY,
    StoreName FOREIGN KEY REFERENCES Stores(StoreName),
    Shopperid FOREIGN KEY REFERENCES Shoppers(ShopperId),
    ArCode REFERENCES ArCodes(ArCode),
    Amount INTEGER,
    BillDate DATE,
    Quantity NUMBER(4) Default 1 Check (Quantity>0)
);

答案 1 :(得分:0)

  1. mysql中没有varchar2。使用varchar
  2. 没有number。使用Decimal
  3. 对于外键,您需要提供references子句以准确说明此列是针对外键的。
  4. Check之前的逗号

这有效。

CREATE TABLE Bill( 
    BillNo INTEGER PRIMARY KEY,
    StoreName VARCHAR(20),
    Shopperid INTEGER,
    ArCode CHAR(5),
    Amount INTEGER,
    BillDate DATE,
    Quantity decimal(4) Default 1,
    Check (Quantity>0)
);

答案 2 :(得分:0)

这适用于 Oracle DB:

CREATE TABLE BILL(
    BILLNO NUMBER PRIMARY KEY,
    STORENAME VARCHAR2(20) REFERENCES STORE(STORENAME),
    SHOPPERID NUMBER REFERENCES SHOPPER(SHOPPERID),
    ARCODE CHAR(5) REFERENCES ARTICLE(ARCODE),
    AMOUNT NUMBER,
    BILLDATE DATE,
    QUANTITY NUMBER(4) DEFAULT 1 CHECK(QUANTITY > 0)
);