2016-04-05 8 views
0

Kann mir jemand sagen, was ich falsch gemacht habe? Ich habe versucht, ein paar Dinge zu ändern, aber ich bekomme immer den gleichen Fehler, so dass ich überzeugt bin, dass ich etwas vergessen habe. Ich hoffe, dass jemand helfen kannTabelle erstellen - SQL-Fehler: ORA-00905: fehlendes Stichwort

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: 

Hier ist das Team Tabelle beziehe ich mich auf:

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

'Doppel precision'? – jarlh

+1

[Diese Datentypinformation] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm#i54335) könnte etwas relevanter sein. Sie können 'double precision' verwenden, aber wenn Sie keine dringende Notwendigkeit haben, dies mit anderen RDBMS kompatibel zu machen, können Sie auch Oracle-Typen verwenden. –

Antwort

1

Statt double Sie können versuchen, NUMBER (precision, scale) zu verwenden. So versuchen, so etwas wie dieses:

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) 

); 

HINWEIS: double precision ist ANSI-unterstützten Datentypen während NUMBER ist Oracle vordefinierte Datentypen

Also, wenn Sie möchten, dass Sie bleiben können mit Präzision verdoppeln:

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) 
); 
+1

Hallo Rahul, danke dass du so schnell reagiert hast und es auch erklärt hast, doppelte Präzision hat funktioniert! –

+0

@ShakiraRhianeSalazar: - Gern geschehen! –

0

Sie sollten nicht Limit für Int-Typ verwenden ... Oracle wird Standardlänge für Int-Typ übernehmen. Anstelle von int können Sie den Zahlentyp verwenden, um ihn auszuführen. Und DOUBLE PRECISION ist ein Datentyp in Oracle, aber Double ist nicht da.

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) 
); 
0

Verwendung NUMBER (Genauigkeit, Skala) statt 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) 

);