ORA-00907: отсутствует правая скобка (все скобки есть!) - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь создать таблицу в oracle и постоянно получаю сообщение об ошибке.Вот мой код.

CREATE TABLE employee 
( 
     employeenumber INT(2) NOT NULL, 
     firstname      CHAR(30) NOT NULL, 
     lastname       CHAR(100) NOT NULL, 
     department     CHAR(35) NOT NULL, 
     position       CHAR(35) NOT NULL, 
     supervisor     INT(2) NOT NULL, 
     officephone    CHAR(12) NOT NULL, 
     emailaddress   CHAR(100) NOT NULL 

); 

Может кто-нибудь пролить свет на то, что я делаю неправильно?

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Я думаю, это НОМЕР, а не ЦЕЛЬ.

CREATE TABLE employee
(
     employeenumber NUMBER(2) NOT NULL, 
     firstname      CHAR(30) NOT NULL, 
     lastname       CHAR(100) NOT NULL, 
     department     CHAR(35) NOT NULL, 
     position       CHAR(35) NOT NULL, 
     supervisor     NUMBER(2) NOT NULL, 
     officephone    CHAR(12) NOT NULL, 
     emailaddress   CHAR(100) NOT NULL 

); 
Table created.
0 голосов
/ 19 февраля 2019

Если бы вы использовали SQL * Plus (вместо используемого вами графического интерфейса), вы бы увидели виновника:

SQL> CREATE TABLE employee
  2  (
  3       employeenumber INT(2) NOT NULL,
  4       firstname      CHAR(30) NOT NULL,
  5       lastname       CHAR(100) NOT NULL,
  6       department     CHAR(35) NOT NULL,
  7       position       CHAR(35) NOT NULL,
  8       supervisor     INT(2) NOT NULL,
  9       officephone    CHAR(12) NOT NULL,
 10       emailaddress   CHAR(100) NOT NULL
 11  );
     employeenumber INT(2) NOT NULL,
                       *
ERROR at line 3:
ORA-00907: missing right parenthesis


SQL>

Понятно?Удалите размер INT.

Кроме этого, вы, скорее всего, НЕ хотите использовать CHAR тип данных, но VARCHAR2.CHAR заполнит все значения справа пробелами, вплоть до полной длины столбца, и вызовет проблемы.

SQL> create table employee
  2  (
  3       employeenumber int not null,
  4       firstname      varchar2(30) not null,
  5       lastname       varchar2(100) not null,
  6       department     varchar2(35) not null,
  7       position       varchar2(35) not null,
  8       supervisor     int not null,
  9       officephone    varchar2(12) not null,
 10       emailaddress   varchar2(100) not null
 11  );

Table created.

SQL>
0 голосов
/ 19 февраля 2019

Спецификатор типа данных int (integer) не принимает аргумент.Так что удалите (2) из int(2), ... и т. Д.Если вам нужно указать количество цифр, используйте вместо этого number(2).int или integer (без числа в скобках) поддерживается и эквивалентно number(38)

См. Соответствующие синтаксические диаграммы для типов данных в Oracle документация :

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...