简体   繁体   中英

Create table - SQL Error: ORA-00905: missing keyword

can anyone tell me what I've done wrong? I've tried changing a few things around but I keep getting the same error so I'm convinced that I've forgotten something. I hope someone can help

Error starting at line : 1 in command -


CREATE TABLE Player(
Plyr_ID int NOT NULL PRIMARY KEY, 
Plyr_Fname NVARCHAR2(20),
Plyr_Sname NVARCHAR2(20),
Plyr_DOB date,
Plyr_Height DOUBLE,
Plyr_Weight double,
Plyr_position NVARCHAR2(20),
Plyr_experience int,
Team_ID INT NOT NULL,
CONSTRAINT fk_Team FOREIGN KEY (Team_ID) references Team(Team_ID)

);


Error report -
SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"
*Cause:    
*Action:

Here's the Team table I'm referring to:

CREATE TABLE Team(
Team_ID int NOT NULL PRIMARY KEY,
Team_Name NVARCHAR2(50),
Team_Homecourt nvarchar2(50)
);

Instead of double you can try to use NUMBER (precision, scale) . So try something like this:

CREATE TABLE Player(
Plyr_ID int NOT NULL PRIMARY KEY, 
Plyr_Fname NVARCHAR2(20),
Plyr_Sname NVARCHAR2(20),
Plyr_DOB date,
Plyr_Height NUMBER(7,2),    --Change as per your requirement.
Plyr_Weight NUMBER(7,2),
Plyr_position NVARCHAR2(20),
Plyr_experience int,
Team_ID INT NOT NULL,
CONSTRAINT fk_Team FOREIGN KEY (Team_ID) references Team(Team_ID)

);

NOTE : double precision is ANSI-supported datatypes whereas NUMBER is Oracle built-in datatypes

So if you want you can stick to double using precision as:

CREATE TABLE Player(
Plyr_ID int NOT NULL PRIMARY KEY, 
Plyr_Fname NVARCHAR2(20),
Plyr_Sname NVARCHAR2(20),
Plyr_DOB date,
Plyr_Height DOUBLE PRECISION,
Plyr_Weight DOUBLE PRECISION,
Plyr_position NVARCHAR2(20),
Plyr_experience int,
Team_ID INT NOT NULL,
CONSTRAINT fk_Team FOREIGN KEY (Team_ID) references Team(Team_ID)
);

You should not use limit for int type...oracle will take default length for int type . Instead of int you can use Number type to make it run. And DOUBLE PRECISION is a data type in oracle but Double is not there.

CREATE TABLE Player(
Plyr_ID int NOT NULL PRIMARY KEY, 
Plyr_Fname NVARCHAR2(20),
Plyr_Sname NVARCHAR2(20),
Plyr_DOB date,
Plyr_Height DOUBLE PRECISION,
Plyr_Weight DOUBLE PRECISION,
Plyr_position NVARCHAR2(20),
Plyr_experience int,
Team_ID INT NOT NULL,
CONSTRAINT fk_Team FOREIGN KEY (Team_ID) references Team(Team_ID)
);

Use NUMBER (precision, scale) instead of DOUBLE

CREATE TABLE Player(
Plyr_ID int NOT NULL PRIMARY KEY, 
Plyr_Fname NVARCHAR2(20),
Plyr_Sname NVARCHAR2(20),
Plyr_Dob Date,
Plyr_Height Number(10,2),
Plyr_Weight NUMBER(10,2),
Plyr_position NVARCHAR2(20),
Plyr_experience int,
Team_ID INT NOT NULL,
CONSTRAINT fk_Team FOREIGN KEY (Team_ID) references Team(Team_ID)

);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM