2016-04-10 43 views
0

ben bu komutu çalıştırmak çalıştığımda ORACLE veritabanında bir tablo kurmak için çalışıyorum ve bir invalid data type hatası alıyorum: hata mesajına göreORACLE SQL - tablo oluşturma geçersiz veri türü

CREATE TABLE Students (
StudentID NUMBER(8) NOT NULL, 
FirstName VARCHAR(25) NOT NULL, 
Surname VARCHAR(25) NOT NULL, 
Address VARCHAR(100) NOT NULL, 
Postcode VARCHAR(7) NOT NULL, 
DoB DATE NOT NULL, 
Gender VARCHAR(1) NOT NULL, 
StudentCategory VARCHAR(50), 
StudyType VARCHAR(20), 
Nationality VARCHAR(20), 
SmokerStatus BOOLEAN, 
SpecialNeeds VARCHAR(30), 
Comments VARCHAR(30), 
PlacedStatus BOOLEAN, 
CourseID NUMBER(6) NOT NULL, 
AdvisorOfStudies NUMBER(6) NOT NULL, 
NextOfKin NUMBER(8) NOT NULL 
); 

'satır 1'den başlayarak' bir şey oluyor. Bu, herhangi bir veri sözlüğü yerine gerçek oluşturma ifadesinin kendisi anlamına gelir. Bunun invalid data type hatasına neden olabileceğini anlamıyorum.

Eğer buna neyin neden olabileceğini kimse tespit ederse, bu büyük bir takdir olacaktır!

Hata ayrıntıları:

Hata raporu - SQL hatası: ORA-00902: geçersiz veri türü 00902. 00000 - "geçersiz veri türü" * Neden:
* Eylem:

sayesinde Mark

+1

** [torpil veritabanlarında bir Boole türü var mı?] (Http://stackoverflow.com/questions/3726758/is-there-a-boolean-type-in-oracle-databases) ** – lad2025

+0

Bunun bununla ilgili bir şey olabileceğini düşündüm, ancak Oracle'ın web sitesinde hiçbir şey bunun yanlış olabileceğini belirtti. Bana doğru yönde işaret edebilir miyim @ lad2025 – marcuthh

+0

Hata ile ilgili değil ama dikkat değer - Oracle SQL Referansından: "VARCHAR veri tipini kullanmayın. Bunun yerine VARCHAR2 veri türünü kullanın. VARCHAR veri türü şu anda eşanlamlı olsa da VARCHAR2 ile, VARCHAR veri türünün, farklı karşılaştırma semantikleri ile karşılaştırıldığında değişken uzunluklu karakter dizileri için kullanılan ayrı bir veri türü olarak yeniden tanımlanması planlanmaktadır. " – EdStevens

cevap

3

SmokerStatus'u BOOLEAN kaynağından char (1) konumuna getirin. Oracle, boolean data type ürününe sahip değil. Bu amaç için char (1) veya number (1) kullanmanız gerekir.

SmokerStatus char(1),