2016-03-12 5 views
0

У меня самое сложное время выяснить, что не так с моими данными. Я продолжаю получать сообщение об ошибке ORA-00984, колонка не разрешена здесь. Столбец - 84, который работает как половой характер. Таблица была создана со следующим утверждением:Ошибка ввода данных в таблицы SQL

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

Можете ли вы объяснить, что такое ошибка? – eronax59

+0

Вот ошибка, которая исходит из SQL: Ошибка при запуске: 33 в команде - 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) Ошибка в командной строке: 34 Столбец: 84 Отчет об ошибке - Ошибка SQL: ORA-00984: здесь не разрешена колонка 00984. 00000 - «колонка не разрешена здесь» * Причина: – Harlan

+1

Надеюсь, эта работа: используйте M как 'M'. – eronax59

ответ

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); 
+0

Я пробовал это. Это ошибка, которую я получаю: Ошибка SQL: ORA-01861: литерал не соответствует строке формата 01861. 00000 - «литерал не соответствует строке формата» * Причина. Литералы на входе должны быть такой же длины, как и в литералах в строка формата (за исключением ведущих пробелов). Если был изменен модификатор «FX», буквальная буква должна точно соответствовать без лишних пробелов. * Действие: Исправьте строку формата, чтобы соответствовать литералу. – Harlan

+0

BDATE может потребоваться преобразование даты с помощью функции 'to_date'. – Sid

+0

Я об этом подумал. Но ошибка, кажется, указывает на стол для секса. – Harlan

0

В вашем CREATE TABLE заявлении вы не указали размер пола таблицы, по умолчанию размер CHAR равен 1. Это означает, что вы можете вставить только 1 символ в сексе. Или изменения необходимы как

SEX CHAR(6) 
MINIT CHAR('*the max size of string you want to put into this column*') 

Примечание я использовал 6 как размер полукокса в sexbecause максимального размера строки, вы можете вставить в 6 (для «женского»).

+0

Ну, я просто изменил таблицу, чтобы сделать как MINIT, так и SEX char (1). Это все еще не сработало. По-прежнему получается такая же ошибка. – Harlan

+0

Я в порядке с SEX размером 1 символ. M или F. – Harlan

0

Таким образом, вопрос был двояким. Формат даты был неправильным. Должно быть, 01-JAN-1965. И SEX (M или F) нужны одинарные кавычки вокруг них. Я предполагаю, что это показывает, что вы не должны доверять данным, предоставленным вам.