ORA-00907:缺少右括号。当我没有任何缺少括号或拼写错误时 [已关闭]

ORA-00907: missing right parenthesis .. when i don't have any missing parenthesis or spelling mistakes [closed]

提问人:whatavever2000 提问时间:12/1/2020 最后编辑:Martijn Pieterswhatavever2000 更新时间:12/3/2020 访问量:79

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

2年前关闭。

当我运行这个 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
SQL Oracle 语法错误 ddl create-table

评论

0赞 Gordon Linoff 12/1/2020
什么?int(16)
0赞 whatavever2000 12/1/2020
这是 int 限制。.这是错的吗?
0赞 whatavever2000 12/1/2020
int 用于存储数字顺便说一句
0赞 12/1/2020
16在MySQL中甚至不是一个限制
0赞 whatavever2000 12/1/2020
好。我现在明白了,谢谢

答:

1赞 Mureinik 12/1/2020 #1

错误消息不是很好,事实上问题并不在于括号,而在于数据类型。Oracle 没有 和 类型。相反,您可以使用 和 :intdatetimenumber(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中没有以任何方式限制值的范围intintegernumberint(16)
0赞 whatavever2000 12/1/2020
好的,非常感谢