2016-04-05 112 views
0

yanlış yaptıklarını bana söyleyebilir mi? Etrafta birkaç şey değiştirmeyi denedim ama aynı hatayı alıyorum, böylece bir şeyi unuttuğuma ikna oldum. BirininTablo oluşturma - SQL Hatası: ORA-00905: eksik anahtar kelime

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: 

İşte bahsediyorum Takım masam yardımcı olabilir umut:

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

'çift precision' arasında (hassasiyet, ölçek)? – jarlh

+1

[Bu veri tipi bilgisi] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm#i54335) biraz daha alakalı olabilir. 'Çift duyarlık' kullanabilirsiniz, ancak bunu diğer RDBMS ile uyumlu hale getirmeye yönelik bir gereksiniminiz olmadıkça, Oracle türlerini de kullanabilirsiniz. –

cevap

1

yerine double Eğer NUMBER (precision, scale) kullanmayı deneyebilirsiniz.

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) 

); 

NOT: Yani böyle bir şey denemek double precisionNUMBER oysa ANSI destekli veri türleri olduğu sen olarak kesinlik kullanarak çift sopa olabilir istiyorsanız, Oracle yerleşik datatypes Yani

geçerli:

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

Merhaba Rahul, bu kadar çabuk cevap verdiğiniz için teşekkür ederim ve bunu da açıkladığınız için, çift hassasiyetle çalıştı! –

+0

@ShakiraRhianeSalazar: - Rica ederim! –

0

Int türü için sınır kullanmamalısınız ... oracle int türünde varsayılan uzunluğu alır. Int yerine çalıştırmak için Number türünü kullanabilirsiniz. Ve DOUBLE PRECISION, Oracle'da bir veri türüdür, ancak Double orada değildir.

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

kullanımı NUMARASI yerine ÇİFT

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) 

);