有没有办法在 Oracle 中声明状态和级别?

Is there a way to declare Status and Level in Oracle?

我通常使用 SQL 服务器,所以在 Oracle 中声明变量似乎有点不同。

这是我正在尝试创建的 table:

  CREATE TABLE EMPLOYEE(
EmpNo char(10) CONSTRAINT PK_EmpNo PRIMARY KEY,
EmpName varchar2(30),
Birthday DATE not null,
DeptNo number,
MgrNo varchar2(30) not null,
StartDate DATE not null,
Salary number(7,2) not null,
Level number CONSTRAINT Level_ck check (Level > 0 AND Level < 8) not null,
Status number CONSTRAINT Status_ck check (Status >= 0 AND Status <= 2) not null,
Note varchar2(4000)); 

这是错误:

我认为我声明级别和状态是错误的,因为当我将它们从 Table 中删除时,table 可以是 created.Any 建议?

LEVEL是保留字,不能作为标识符使用。每个数据库都有它们; Oracle 保留字的完整列表在这里:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Oracle-SQL-Reserved-Words.html#GUID-55C49D1E-BE08-4C50-A9DD-8593EB925612

STATUS 不是保留字,您应该可以使用该名称创建列。

另请注意,Oracle 中的 table 和列名默认情况下不是 case-sensitive,因此使用驼峰式命名法并不合适(它只会在您的 CREATE TABLE DDL 中可见命令)。更标准的命名约定是使用下划线分隔标签的组成部分,例如 START_DATEDEPT_NRTABLE_A.