Ошибка SQL: ORA-00907: отсутствует правая скобка - PullRequest
1 голос
/ 04 декабря 2011

Я использую Oracle SQL developer для создания базовой таблицы с помощью следующей команды:

CREATE TABLE chartered_flight(
   flight_no NUMBER(4) PRIMARY KEY
   , customer_id FOREIGN KEY
   , aircraft_no FOREIGN KEY
   , flight_type VARCHAR2 (12)
   , flight_date DATE NOT NULL
   , flight_time TO_DATE 'HH:MI' NOT NULL
   , takeoff_at CHAR (3) NOT NULL
   , destination CHAR (3) NOT NULL
)

Где пропущена правая скобка?Или синтаксис, который я использовал неверно.

Я внес следующие изменения:

CREATE TABLE chartered flight(
   flight_no NUMBER(4) PRIMARY KEY
   , customer_id NUMBER(6) REFERENCES [customer]([customer_id])
   , aircraft_no NUMBER(4) REFERENCES [aircraft]([aircraft_no])
   , flight_type VARCHAR2 (12)
   , flight_date DATE NOT NULL
   , flight_time INTERVAL DAY TO SECOND NOT NULL
   , takeoff_at CHAR (3) NOT NULL
   , destination CHAR (3) NOT NULL)

Теперь я получаю эту ошибку:

Error at Command Line:1 Column:23
Error report:
SQL Error: ORA-00922: missing or invalid option
00922. 00000 -  "missing or invalid option"
*Cause:    
*Action:

У меня такое ощущение, что это как-то связано с TO_DATE, или это потому, что я еще не создал свой самолетный стол, поэтому не указано aircraft_no?Может кто-нибудь, пожалуйста, помогите, спасибо.

Ответы [ 3 ]

2 голосов
/ 04 декабря 2011

Нет типа с именем TO_DATE. To_DATE используется для преобразования строки в дату.

Таким образом, оператор create должен выглядеть примерно так:

CREATE TABLE chartered_flight(
    flight_no NUMBER(4) PRIMARY KEY, 
    customer_id FOREIGN KEY, 
    aircraft_no FOREIGN KEY, 
    flight_type VARCHAR2 (12), 
    flight_date DATE NOT NULL,
    flight_time VARCHAR(4) NOT NULL, 
    takeoff_at CHAR (3) NOT NULL, 
    destination CHAR (3) NOT NULL)

Вы можете использовать to_date при выборе данных из таблицы. Например

Select to_date(flight_date, 'yyyy/mm/dd') from chartered_flight;
1 голос
/ 04 декабря 2011

Чтобы указать ограничение внешнего ключа, следует использовать встроенный customer_id [type] REFERENCES [master_table_name]([master_column_name]) или синтаксис вне строки: , CONSTRAINT [constraint_name] FOREIGN KEY(customer_id) REFERENCES [master_table_name]([master_column_name]) См. Еще пример здесь . Кроме того, обычно имеет смысл добавлять индексы к столбцам внешнего ключа.

Для flight_time вам, вероятно, нужно использовать INTERVAL DAY TO SECOND type

0 голосов
/ 20 мая 2014

ALTER TABLE EMPLOYEE_DETAILS ADD (EMPLOYEE_ID NUMBER (10), EMPLOYEE NAME VARCHAR2 (100),);

Над оператором ALTER возникла следующая ошибка.
Отчет об ошибке:
Ошибка SQL: ORA-00907: пропущена правая скобка
00907. 00000 - «пропущена правая скобка»
* Причина:
* Действие:

Как бы я ни исправил свою личность ивот правильный.

ALTER TABLE EMPLOYEE_DETAILS ADD (EMPLOYEE_ID NUMBER (10), EMPLOYEE_NAME VARCHAR2 (100),);

Решение: в имени второго столбца есть пробел, которыйвызвал эту ошибку.

Спасибо,
Манне

...