我正在努力弄清楚我的数据有什么问题。我一直收到错误ORA-00984,这里不允许列。列是84,这可以说是性别角色。该表是使用以下语句创建的:
CREATE TABLE EMPLOYEE
(
FNAME VARCHAR2(15) NOT NULL,
MINIT CHAR,
LNAME VARCHAR2(15) NOT NULL,
SSN CHAR(9) NOT NULL,
BDATE DATE,
ADDRESS VARCHAR2(30),
SEX CHAR,
SALARY NUMBER(10,2),
SUPER_SSN CHAR(9),
DNO NUMBER NOT NULL,
CONSTRAINT EMPPK PRIMARY KEY (SSN) DISABLE,
CONSTRAINT EMPSUPERFK FOREIGN KEY (SUPER_SSN) REFERENCES EMPLOYEE(SSN) DISABLE
);
这是插入声明:
INSERT INTO EMPLOYEE (FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO)
VALUES ('John', 'B', 'Smith', 123456789, '1965-02-09', '731 Fondren, Houston, TX', M, 30000, 333445555, 5);
过去一小时左右,我一直盯着这个,无法弄清楚。我错过了什么?
答案 0 :(得分:0)
也许这个解决方案适合您:
INSERT INTO EMPLOYEE (FNAME, MINIT, LNAME, SSN, BDATE, ADDRESS, SEX, SALARY, SUPER_SSN, DNO)
VALUES ('John', 'B', 'Smith', '123456789', '1965-02-09', '731 Fondren, Houston, TX', 'M', 30000, '333445555', 5);
答案 1 :(得分:0)
在您的CREATE TABLE语句中,您没有指定性别表的大小,CHAR的默认大小为1.这意味着您只能在性别列中插入1个字符。或者需要进行更改,例如
SEX CHAR(6)
MINIT CHAR('*the max size of string you want to put into this column*')
注意我在性别中使用6作为字符大小,因为你可以插入的字符串的最大大小为6(对于'女性')。
答案 2 :(得分:0)
所以问题是双重的。日期格式不正确。应该是01-JAN-1965。 SEX(M或F)需要单引号。我想这表明你不应该相信给你的数据。