提问人:whatavever2000 提问时间:12/1/2020 最后编辑:Martijn Pieterswhatavever2000 更新时间:12/3/2020 访问量:79
ORA-00907:缺少右括号。当我没有任何缺少括号或拼写错误时 [已关闭]
ORA-00907: missing right parenthesis .. when i don't have any missing parenthesis or spelling mistakes [closed]
问:
当我运行这个 SQL 时,它给了我这个错误,我无法弄清楚
CREATE TABLE PAYMENT (
Payment_ID int(16) not null,
Amount_paid varchar2(30) not null,
Payment_ReceivedBy varchar(30) not null,
Payment_ReceivedFrom varchar(30) not null,
Payment_Date datetime not null,
Card_Number varchar2(20) not null,
Card_Holder_Name varchar2(30) not null,
Is_CreditCard number(20) ,
Is_DebitCard number(20),
Online_Payment varchar(10),
CashOnDelivery varchar(10),
CONSTRAINT PaymentID_PK PRIMARY KEY (Payment_ID)
);
错误:
ORA-00907: missing right parenthesis
答:
1赞
Mureinik
12/1/2020
#1
错误消息不是很好,事实上问题并不在于括号,而在于数据类型。Oracle 没有 和 类型。相反,您可以使用 和 :int
datetime
number(16)
date
CREATE TABLE PAYMENT (
Payment_ID number(16) not null, -- Here
Amount_paid varchar2(30) not null,
Payment_ReceivedBy varchar(30) not null,
Payment_ReceivedFrom varchar(30) not null,
Payment_Date date not null, -- And here
Card_Number varchar2(20) not null,
Card_Holder_Name varchar2(30) not null,
Is_CreditCard number(20) ,
Is_DebitCard number(20),
Online_Payment varchar(10),
CashOnDelivery varchar(10),
CONSTRAINT PaymentID_PK PRIMARY KEY (Payment_ID)
);
评论
0赞
whatavever2000
12/1/2020
它奏效了,谢谢
0赞
12/1/2020
好吧,Oracle确实支持(和)数据类型 - 但它只是别名 - 并且在MySQL中没有以任何方式限制值的范围int
integer
number
int(16)
0赞
whatavever2000
12/1/2020
好的,非常感谢
评论
int(16)
16
在MySQL中甚至不是一个限制