【问题标题】:ORA-00907: missing right parenthesis .. when i don't have any missing parenthesis or spelling mistakes [closed]ORA-00907: 缺少右括号 .. 当我没有缺少任何括号或拼写错误时 [关闭]
【发布时间】:2021-03-12 19:25:20
【问题描述】:

当我运行这个 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

【问题讨论】:

  • 什么是int(16)?
  • 这是 int 限制.. 错了吗?
  • int 用于存储数字 btw
  • 16 甚至不会成为 MySQL 的限制
  • 好的。我知道了,谢谢

标签: sql oracle syntax-error ddl create-table


【解决方案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)
);

【讨论】:

  • 成功了,谢谢
  • 好吧,Oracle 确实支持 int(和 integer)数据类型 - 但它只是 number 的别名 - 而 MySQL 中的 int(16) 支持 不 以任何方式限制值的范围
  • 好的,非常感谢
猜你喜欢
  • 2015-03-31
  • 2016-10-23
  • 1970-01-01
  • 2013-05-12
  • 2014-03-25
  • 2018-05-23
  • 2018-12-06
相关资源
最近更新 更多