将数据插入SQL表时出错

时间:2016-03-12 04:41:48

标签: sql oracle

我正在努力弄清楚我的数据有什么问题。我一直收到错误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);

过去一小时左右,我一直盯着这个,无法弄清楚。我错过了什么?

3 个答案:

答案 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)需要单引号。我想这表明你不应该相信给你的数据。