2017-04-01 3 views
0

SQL에서 테이블을 만들려고하는데 키워드가 누락되었습니다. 그것을 해결하는 방법을 알아낼 : 오라클에서SQL에서 테이블을 만들려고하는데 키워드를 빠뜨린 경우 문제를 해결하는 방법을 찾을 수 없습니다.

CREATE TABLE Attendance_of_employee 
(
    supervisior VARCHAR(30) DEFAULT 'NONE', 
    arrival double NOT NULL, 
    shift_end double NOT NULL, 
    date_time DATE NOT NULL, 
    worked_hours INT NOT NULL, 
    ID_record VARCHAR(30) NOT NULL, 
    employeeID INT NOT NULL, 
    PRIMARY KEY (ID_record), 
    FOREIGN KEY (employeeID) REFERENCES EmployeeTAB(employeeID) 
); 

Error report - 
SQL Error: ORA-00905: chýbajúce kľúčové slovo 
00905. 00000 - "missing keyword" 
*Cause:  
*Action: 
+1

두 번 변경해야 할 것 같습니다. 다음은 링크입니다 http://stackoverflow.com/a/36424127/7623263 – ghwananis

+0

왜 데이터 유형 번호가 아닌 도착 및 이동 종료일입니까? 그것은 훨씬 더 의미가 있습니다. – mathguy

답변

2

, 당신은 일반적으로 문자열에 대한 숫자 값에 대한 numbervarchar2()를 사용합니다. 나는 항상 기본 키를 테이블의 첫 번째 열로 유지합니다. 그래서 (EmployeeTAB가 정의되어 있지 않기 때문에 외래 키 관계없이)

CREATE TABLE Attendance_of_employee (
    ID_record VARCHAR2(30) NOT NULL, 
    supervisior VARCHAR2(30) DEFAULT 'NONE', 
    arrival number NOT NULL, 
    shift_end number NOT NULL, 
    date_time DATE NOT NULL, 
    worked_hours INT NOT NULL, 
    employeeID INT NOT NULL, 
    PRIMARY KEY (ID_record), 
    FOREIGN KEY (employeeID) REFERENCES EmployeeTAB(employeeID) 
); 

Here는 Rextester의 링크입니다.

+0

대단히 감사합니다! –

1

double 대신 double precision을 사용하십시오.

CREATE TABLE Attendance_of_employee(supervisior VARCHAR(30) DEFAULT 'NONE', 
arrival double precision NOT NULL, 
shift_end double precision NOT NULL, date_time DATE NOT NULL, 
worked_hours INT NOT NULL, 
ID_record VARCHAR(30) NOT NULL, employeeID INT NOT NULL, PRIMARY KEY (ID_record), 
FOREIGN KEY (employeeID) REFERENCES EmployeeTAB(employeeID));