Ошибка при попытке создать новую таблицу в SQL - PullRequest
0 голосов
/ 16 декабря 2018

Я выполняю некоторые упражнения SQL, и одно из них требует от меня выполнения данного кода, который создает новую таблицу

CREATE TABLE TDEPTO_1 (
    NUMDE INTEGER,
    NUMCE INTEGER,
    DIREC INTEGER,
    TIDIR TEXT,
    PRESU INT,
    DEPDE INT,
    NOMDE TEXT,
    CONSTRAINT [PK] PRIMARY KEY ([NUMDE])
);

Но когда я пытаюсь запустить его в Oracle Aplication Express, он отображает эту ошибкусообщение

ORA-00902: неверный тип данных

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Тип данных TEXT не существует в Oracle.Вы хотите использовать VARCHAR2(n), где n - максимальное количество байтов, которое может разрешить ваш столбец (максимум 4000 байтов).

В зависимости от версии Oracle, INT и INTEGER могут работать, но лучше использовать PLS_INTEGER

Кроме того, вы должны удалить квадратные скобки ([]) в определении ограничения, так как это также приведет к ошибке в Oracle.

Попробуйте (измените 100 на желаемую длину текста):

CREATE TABLE TDEPTO_1 (
    NUMDE PLS_INTEGER,
    NUMCE PLS_INTEGER,
    DIREC PLS_INTEGER,
    TIDIR VARCHAR2(100),
    PRESU PLS_INTEGER,
    DEPDE PLS_INTEGER,
    NOMDE VARCHAR2(100),
    CONSTRAINT PK PRIMARY KEY (NUMDE)
);
0 голосов
/ 16 декабря 2018

Ваш текущий код выглядит как SQL Server.В Oracle нет типа данных с точным названием INTEGER, но есть PLS_INTEGER.Точно так же нет типа TEXT, но мы можем использовать что-то вроде VARCHAR2:

CREATE TABLE TDEPTO_1 (
    NUMDE PLS_INTEGER,
    NUMCE PLS_INTEGER,
    DIREC PLS_INTEGER,
    TIDIR VARCHAR2(100),
    PRESU PLS_INTEGER,
    DEPDE PLS_INTEGER,
    NOMDE VARCHAR2(100),
    CONSTRAINT PK PRIMARY KEY (NUMDE)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...