You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLPLUS中ORA-00907缺失右括号错误排查求助

Oracle创建表时ORA-00907错误解决

问题代码

SQL> CREATE TABLE Reservation_21BAI1750(

  2  PNR number(9),

  3  Journey_Date Date NULL,

  4  No_of_Seats INT(8) ZEROFILL CHECK (No_of_Seats < 50),

  5  Address varchar2(50) NULL,

  6  Contact_No number(9) UNIQUE,

  7  BusNo varchar2(10),

  8  Seat_No number NOT NULL

  9  );

错误信息

No_of_Seats INT(8) ZEROFILL CHECK (No_of_Seats < 50),
*
ERROR at line 4:
ORA-00907: missing right parenthesis

即使移除ZEROFILL,仍会触发相同错误。

错误原因

  1. INT(8)语法不合法:Oracle中INT是NUMBER(38)的别名,不支持通过INT(n)指定显示宽度,这种写法属于MySQL语法,Oracle需用NUMBER(n)定义数字精度。
  2. ZEROFILL属性不支持:该属性是MySQL特有功能,Oracle没有对应的存储层面语法,必须移除。

修正后的SQL语句

CREATE TABLE Reservation_21BAI1750(
    PNR NUMBER(9),
    Journey_Date DATE NULL,
    No_of_Seats NUMBER(8) CHECK (No_of_Seats < 50),
    Address VARCHAR2(50) NULL,
    Contact_No NUMBER(9) UNIQUE,
    BusNo VARCHAR2(10),
    Seat_No NUMBER NOT NULL
);

补充:模拟ZEROFILL显示效果

若需要实现类似ZEROFILL的补零显示,可在查询时使用TO_CHAR函数处理:

SELECT TO_CHAR(No_of_Seats, 'FM00000000') AS No_of_Seats FROM Reservation_21BAI1750;

内容的提问来源于stack exchange,提问作者Manan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:01:17