缺少右括号错误(ORA-00907: 缺少右括号)

Missing right parenthesis error (ORA-00907: missing right parenthesis)

我正在尝试创建 table,但出现错误 "ORA-00907: missing right parenthesis"。

CREATE TABLE data_create (
studentid NUMBER(9) PRIMARY KEY,
name      VARCHAR(25) NOT NULL,
program   CHAR(4)
CONSTRAINT check_program
CHECK (program = 'CP', 'CPA', 'CSTC', 'CSTY'),
dob       DATE,
email     VARCHAR(20)
CONSTRAINT check_email UNIQUE (email),
phone     NUMBER(10),
feepaid   NUMBER(6)
CONSTRAINT check_feepaid
CHECK (feepaid BETWEEN 0 and 9999.99)
)

我尝试了几种不同的方法,但无法让错误消失。我是 oracle 的新手,对语法不是很熟悉。谁能告诉我我做错了什么? 谢谢!

这个表达式应该是什么?

CHECK (program = 'CP' || 'CPA || 'CSTC' || 'CSTY'),

在Oracle中,||是字符串连接。也许你的意思是:

CHECK (program IN ('CP', 'CPA', 'CSTC', 'CSTY'),

可能还有其他错误,但这一个很突出。

编辑:

以下作品适用于 SQL Fiddle

CREATE TABLE data_create (
    studentid NUMBER(9) PRIMARY KEY,
    name      VARCHAR2(25) NOT NULL,
    program   CHAR(4)
    CONSTRAINT check_program CHECK (program IN ('CP', 'CPA', 'CSTC', 'CSTY')),
    dob       DATE,
    email     VARCHAR2(20) UNIQUE,
    phone     NUMBER(10),
    feepaid   NUMBER(6)
    CONSTRAINT check_feepaid
        CHECK (feepaid BETWEEN 0 and 9999.99)
)

请注意,我将字符串更改为 Oracle 推荐的 varchar2()。我还建议您将 phone 更改为字符串,以便它可以处理前导零。