布尔型数据导致无效数据类型 - Oracle

5

我正在尝试在Oracle SQL Developer中创建一张表格,但是遇到了ORA-00902错误。

这是我用于创建表格的架构:

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, <-- the line giving the error -->
            CONSTRAINT APPOINTMENT_PK PRIMARY KEY (Appointment)
);

我做错了什么?

提前感谢。


支持的数据类型:http://docs.oracle.com/cd/E16655_01/server.121/e17209/sql_elements001.htm#i45441 - Jeffrey Kemp
请参考此处的讨论,因为表格中没有布尔类型:https://dev59.com/53VD5IYBdhLWcg3wR5go - WW.
5个回答

10

我最近听说 Oracle 没有 boolean 类型。请使用 number(1) 替代!


4
仅限于SQL,在PLSQL中则有。 - A.B.Cade

5

在Oracle中,虽然PL/SQL块支持boolean数据类型,但是在模式级别上不支持。在这里,我指的是您不能创建类型为boolean的表列,也不能将记录的嵌套表类型的一列设置为boolean。但是,在PL/SQL中,您可以创建一个带有布尔列的记录类型集合。

作为解决方法,我建议使用CHAR(1 byte)类型,因为它只需要一个字节来存储您的值,而NUMBER格式需要两个字节。在Oracle文档中此处了解更多关于数据类型和大小的信息。


4

Oracle不支持表列数据类型的布尔值。您可能应该使用CHAR(1)(是/否)

您可以在此其他答案中了解更多信息。


0
使用实体类创建模式时,将布尔值定义如下将会有所帮助。
@Column(columnDefinition = "number default 0")
private boolean picked;


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