布尔值给出无效的数据类型 - Oracle
布尔值给出无效的数据类型 - Oracle
我正在尝试在Oracle SQL Developer中创建一张表,但是遇到了ORA-00902错误。\n以下是我用于创建表的模式:\n
CREATE TABLE APPOINTMENT( Appointment NUMBER(8) NOT NULL, PatientID NUMBER(8) NOT NULL, DateOfVisit DATE NOT NULL, PhysioName VARCHAR2(50) NOT NULL, MassageOffered BOOLEAN NOT NULL, <-- 出错的那一行 --> CONSTRAINT APPOINTMENT_PK PRIMARY KEY (Appointment) );
\n我做错了什么?\n提前感谢。
Oracle数据库不支持boolean类型作为表列的数据类型。你应该使用CHAR(1)代替(Y/N)。
你可以在这个回答中找到更多信息。
(Boolean giving invalid datatype - Oracle)这个问题的出现的原因是Oracle数据库不支持boolean类型作为表列的数据类型。解决方法是使用CHAR(1)代替boolean类型,并将其设置为(Y/N)。
详细解决方法可以参考以下内容:
-- 创建一个示例表 CREATE TABLE example ( id NUMBER, is_valid CHAR(1) ); -- 插入数据 INSERT INTO example (id, is_valid) VALUES (1, 'Y'); -- 查询数据 SELECT * FROM example; -- 结果应该类似于: -- ID | IS_VALID -- 1 | Y
通过将boolean类型替换为CHAR(1),我们可以在Oracle数据库中存储和查询类似于(Y/N)的布尔值。
你也可以参考这个回答获取更多相关信息。
在Oracle中,虽然在PL/SQL块中支持boolean
数据类型,但在模式级别上不支持。在这里,所谓的模式级别指的是不能创建类型为boolean
的表列,也不能创建带有一个列为boolean
的记录的嵌套表类型。然而,在PL/SQL中可以创建一个带有boolean列的记录类型集合。
作为一种解决方法,建议使用CHAR(1 byte)
类型,因为它只需要一个字节来存储值,而NUMBER
格式需要两个字节。在Oracle文档的这里可以了解更多关于数据类型和大小的信息。