ORA-00902: неверный тип данных 00902. 00000 - «неверный тип данных» - PullRequest
0 голосов
/ 28 марта 2020

Это моя последняя таблица, созданная в Oracle, но я не совсем уверен, в чем ошибка этой таблицы.

CREATE TABLE PATIENTAPPOINTMENT(
APPOINTMENT_NUM VARCHAR (30) PRIMARY KEY,
STAFF_NUM VARCHAR (30) NOT NULL,
PATIENT_NUM VARCHAR (30) NOT NULL,
PROVIDER_NUM VARCHAR (30) NOT NULL,
APPOINTMENTDATE DATE NOT NULL,
APPOINTMENTTIME TIME NOT NULL,
EXAMROOMNUM VARCHAR (30) NOT NULL,
CONSTRAINT STAFFS_FK FOREIGN KEY(STAFF_NUM) REFERENCES STAFFS (STAFF_NUM),
CONSTRAINT PATIENT_FK FOREIGN KEY (PATIENT_NUM) REFERENCES PATIENT (PATIENT_NUM),
CONSTRAINT LOCAL_DOCTORS_FK FOREIGN KEY (PROVIDER_NUM) REFERENCES LOCALDOCTORS (PROVIDER_NUM));

Это информация об ошибке, представленная

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

ВРЕМЯ не является типом данных, используйте ДАТУ.

VARCHAR поддерживается в Oracle, но не рекомендуется, используйте VARCHAR2.

0 голосов
/ 28 марта 2020

В Oracle нет типа данных TIME (для столбца appointmenttime). DATE тип данных содержит дату и время, например,

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
-------------------
28.03.2020 20:44:59

Это означает, что appointmentdate DATE подойдет.


Кроме этого, все в порядке:

SQL> CREATE TABLE STAFFS (STAFF_NUM VARCHAR(30) PRIMARY KEY);

Table created.

SQL> CREATE TABLE PATIENT (PATIENT_NUM VARCHAR(30) PRIMARY KEY);

Table created.

SQL> CREATE TABLE LOCALDOCTORS (PROVIDER_NUM VARCHAR(30) PRIMARY KEY);

Table created.

SQL> CREATE TABLE PATIENTAPPOINTMENT(
  2  APPOINTMENT_NUM VARCHAR (30) PRIMARY KEY,
  3  STAFF_NUM VARCHAR (30) NOT NULL,
  4  PATIENT_NUM VARCHAR (30) NOT NULL,
  5  PROVIDER_NUM VARCHAR (30) NOT NULL,
  6  APPOINTMENTDATE DATE NOT NULL,
  7  --APPOINTMENTTIME TIME NOT NULL,  --> wrong
  8  EXAMROOMNUM VARCHAR (30) NOT NULL,
  9  CONSTRAINT STAFFS_FK FOREIGN KEY(STAFF_NUM) REFERENCES STAFFS (STAFF_NUM),
 10  CONSTRAINT PATIENT_FK FOREIGN KEY (PATIENT_NUM) REFERENCES PATIENT (PATIENT_NUM),
 11  CONSTRAINT LOCAL_DOCTORS_FK FOREIGN KEY (PROVIDER_NUM) REFERENCES LOCALDOCTORS (PROVIDER_NUM));

Table created.

SQL>

за исключением за то, что вы должны использовать varchar2, а не varchar. Почему? Потому что Oracle рекомендует так.

...