ORACLE SQL - 创建表时无效的数据类型

3

我正在尝试在ORACLE数据库中设置一个表格,但是当我运行以下命令时,出现了“无效的数据类型”错误:

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

根据错误信息,某些事情发生在“从第1行开始”。这意味着在实际的创建语句本身上,而不是任何数据字典中。我不明白这如何导致“无效的数据类型”错误。
如果有人能发现可能导致这个问题的原因,那将不胜感激!
错误细节:
错误报告 - SQL错误:ORA-00902:无效数据类型 00902. 00000-“invalid datatype” *原因:
*操作:
谢谢, 马克

1
在Oracle数据库中是否有布尔类型? - Lukasz Szozda
我认为这可能与此有关,但是Oracle网站上没有明确指出可能有什么问题。你能指导我正确的方向吗?@lad2025 - marcuthh
不关于你的错误,但值得注意的是 - 来自Oracle SQL参考文档:“不要使用VARCHAR数据类型。请改用VARCHAR2数据类型。尽管VARCHAR数据类型目前与VARCHAR2同义,但VARCHAR数据类型计划被重新定义为用于可变长度字符字符串的单独数据类型,与不同的比较语义进行比较。” - EdStevens
1
习惯在Oracle中缺少布尔数据类型。有时非常令人恼火。您将无法编写诸如“where smokerstatus”甚至“where smokerstatus = true”之类的内容 - 您需要将字段设置为char或number,并使用字符或数字比较。 - user5683823
在这个话题中,有一种方法:https://dev59.com/qG865IYBdhLWcg3wnf5t#44589271 - Roberto Góes
1个回答

9

将 SmokerStatus 的数据类型从 BOOLEAN 改为 char(1)。Oracle 没有 boolean 数据类型。你需要使用 char(1) 或 number(1) 来实现此目的。

SmokerStatus char(1),

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接