布尔值给出无效的数据类型 - Oracle

时间:2013-10-22 12:52:01

标签: sql oracle

我正在尝试在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)
);

我做错了什么?

提前致谢

5 个答案:

答案 0 :(得分:8)

最后我听说oracle中没有boolean类型。请改用number(1)

答案 1 :(得分:4)

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

您可以在this other answer

上查看更多信息

答案 2 :(得分:4)

Oracle在架构级别不支持boolean数据类型,但PL / SQL块支持它。按模式级别,我的意思是您不能创建类型为boolean的表列,也不能创建其中一列为boolean的嵌套表类型的记录。但是,您可以在PL / SQL中享有这种自由,您可以使用布尔列创建记录类型集合。

作为一种解决方法,我建议使用CHAR(1 byte)类型,因为只需要一个字节来存储您的值,而不是NUMBER格式的两个字节。在Oracle Docs上阅读有关数据类型和大小here的更多信息。

答案 3 :(得分:0)

我认为你得到了一个低于预期的结果

http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/datatypes.htm#CJACJGBG

答案 4 :(得分:0)

当使用实体类创建架构时,定义如下布尔值会有所帮助

<块引用>
@Column(columnDefinition = "number default 0")
private boolean picked;