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

Posted

技术标签:

【中文标题】ORACLE SQL - 创建表时数据类型无效【英文标题】:ORACLE SQL - invalid data type on table creation 【发布时间】:2016-07-31 18:04:57 【问题描述】:

我正在尝试在 ORACLE 数据库中设置一个表,当我尝试运行此命令时收到 invalid data type 错误:

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 行开始”发生了一些事情。这意味着实际的创建语句本身,而不是任何数据字典。我不明白这如何导致invalid data type 错误。

如果有人能发现可能导致此问题的原因,将不胜感激!

错误详情:

错误报告 - SQL 错误:ORA-00902:无效数据类型 00902. 00000 - “无效数据类型” *原因: *行动:

谢谢, 标记

【问题讨论】:

Is there a boolean type in oracle databases? 我认为这可能与此有关,但 Oracle 的网站上没有任何内容说明这可能有什么问题。你能指出我正确的方向吗@lad2025 与您的错误无关,但值得注意 - 来自 Oracle SQL 参考:“不要使用 VARCHAR 数据类型。请改用 VARCHAR2 数据类型。虽然 VARCHAR 数据类型目前与 VARCHAR2 同义,与不同的比较语义相比,VARCHAR 数据类型计划被重新定义为用于可变长度字符串的单独数据类型。” 习惯于在 Oracle 中缺少布尔数据类型。有时这很烦人。您将无法编写诸如“wheresmokerstatus”甚至“wheresmokerstatus = true”之类的内容 - 您需要将字段设为字符或数字,并使用字符或数字比较。 在这个话题中有一个方法***.com/questions/3726758/… 【参考方案1】:

将 SmokerStatus 从 BOOLEAN 更改为 char(1)。 Oracle 没有 boolean data type 。为此,您需要使用 char(1) 或 number(1)。

SmokerStatus char(1),

【讨论】:

以上是关于ORACLE SQL - 创建表时数据类型无效的主要内容,如果未能解决你的问题,请参考以下文章

我在hibernate里配置的数据类型为java。util.Date,数据库连接的是oracle,创建表时老生成的是datetime

在sql创建数据库表时,如何为字段设一个默认值

oracle数据库创建表时,int型数据为何报错

oracle数据库中怎么设置一个字段的唯一性?

oracle中用SQL语句创建和管理表

oracle数据库创建表时,int型数据为何报错?