【问题标题】:ORA-00907: missing right parenthesis oracle sqlORA-00907: 缺少右括号 oracle sql
【发布时间】:2017-03-11 12:15:50
【问题描述】:

我正在尝试在 oracle application express 中创建表。除了 Chessplayer 之外,所有的表都创建得很好,我真的不知道这是怎么回事。 谁能告诉我下面的 SQL 出了什么问题。

DROP TABLE Сhessplayer CASCADE CONSTRAINTS;

CREATE TABLE Chessplayer
  (
    Chessplayer_ID                   INTEGER NOT NULL ,
    Surname                          CHAR (50) ,
    Name                             CHAR (40) ,
    Fathers_name                     CHAR (40) ,
    Side                             CHAR (10) ,
    Birth_date                       DATE ,
    Date_of_entering                 DATE ,
    Privelegies                      CLOB ,
    Levels                           INTEGER Levels > 0 AND Levels < 6 ,
    Part_ID                          INTEGER NOT NULL ,
    Money_ID                         INTEGER NOT NULL
  ) ;

ALTER TABLE Chessplayer ADD CONSTRAINT Chessplayer_PK PRIMARY KEY ( Chessplayer_ID ) ;

INSERT INTO Chessplayer VALUES 
    (1,'Ivanov','Igor','Vladimirivich','WHITE', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,1,1);
INSERT INTO Chessplayer VALUES 
    (2,'Sokolov','Andrey','Semenovich','BLACK', to_date('20-8-1994','dd-mm-yyyy'), to_date('15-6-2014','dd-mm-yyyy'), 'SUPER SMART',1,1,1);
INSERT INTO Chessplayer VALUES 
    (3,'Smelev','Victor','Petrovich','WHITE', to_date('11-9-1992','dd-mm-yyyy'), to_date('21-12-2014','dd-mm-yyyy'), 'SUPER SMART',1,2,1);  
INSERT INTO Chessplayer VALUES 
    (4,'Sidorov','Sergey','Igorevich','BLACK', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,2,1);
INSERT INTO Chessplayer VALUES 
    (5,'Sidorov','Sergey','Igorevich','BLACK', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,3,1);
INSERT INTO Chessplayer VALUES 
    (6,'Ivanov','Igor','Vladimirivich','WHITE', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,3,1);

INSERT INTO Chessplayer VALUES 
    (7,'Timurov','Aleksey','Geogrievich','WHITE', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,1,2);
INSERT INTO Chessplayer VALUES 
    (8,'Antonevich','Egor','Vasilievich','BLACK', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,1,2);
INSERT INTO Chessplayer VALUES 
    (9,'Stepanov','Aleksandr','Vladimirivich','WHITE', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,2,2);   
INSERT INTO Chessplayer VALUES 
    (10,'Kireev','Vadim','Sergeevich','BLACK', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,2,2);
INSERT INTO Chessplayer VALUES 
    (11,'Timurov','Aleksey','Geogrievich','BLACK', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,3,2);
INSERT INTO Chessplayer VALUES 
    (12,'Stepanov','Aleksandr','Vladimirivich','WHITE', to_date('6-8-1993','dd-mm-yyyy'), to_date('17-1-2013','dd-mm-yyyy'), 'SUPER SMART',1,3,2);  


ALTER TABLE Chessplayer ADD CONSTRAINT Chesspl_Reg_contr_FK FOREIGN KEY ( Money_ID ) REFERENCES Reg_contribution ( Reg_contr_ID ) ;

ALTER TABLE Chessplayer ADD CONSTRAINT Chessplayer_Party_FK FOREIGN KEY ( Part_ID ) REFERENCES Party ( Party_ID ) ;

以下是 oracle application express 中的错误: CREATE TABLE Chessplayer ( Chessplayer_ID ORA-00907: 缺少右括号

ALTER TABLE Chessplayer ADD CONSTRAINT Chessplayer_PK PRIMAR ORA-02260:表只能有一个主键

对于所有插入: ORA-01722: 无效号码

【问题讨论】:

  • 您在哪里找到in the manual 的语法:INTEGER Levels &gt; 0 AND Levels &lt; 6。另外:你很可能想要CHARVARCHAR
  • 我猜这个表已经存在并且有一个主键,所以你不能再次创建它,并且改变表失败。对于插入,你的日期格式指定前导零,但你的日期字符串没有它们。

标签: sql oracle


【解决方案1】:

我会这样写表创建

-- Create table
create table CHESSPLAYER
(
  CHESSPLAYER_ID   INTEGER not null,
  SURNAME          CHAR(50),
  NAME             CHAR(40),
  FATHERS_NAME     CHAR(40),
  SIDE             CHAR(10),
  BIRTH_DATE       DATE,
  DATE_OF_ENTERING DATE,
  PRIVELEGIES      CLOB,
  LEVELS           INTEGER,
  PART_ID          INTEGER not null,
  MONEY_ID         INTEGER not null
);

-- Create/Recreate check constraints 
alter table CHESSPLAYER
  add constraint CHKLEV
  check (Levels > 0 AND Levels < 6);

这应该可以解决你所有的问题

【讨论】:

  • OP脚本以drop开头,所以基本上他修改了创建部分,并运行了我猜的完整脚本
  • 是的,非常感谢,表已创建,但我的插入仍然无法正常工作 我尝试添加零至今,但没有成功
  • 非常感谢大家,我解决了问题。我在创建它之前有表 Chessplayer,当我用代码编写它时它并没有丢弃(我不知道为什么),所以我自己在应用程序快递的对象浏览器中丢弃了它。
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 2016-10-23
相关资源
最近更新 更多