使用在Vertabelo中生成的SQL代码创建表时缺少右括号错误

时间:2018-12-26 09:31:26

标签: oracle

我想为我的学校项目创建一个数据库。创建了一些表时没有错误,但是当我想创建一个更复杂的表时,出现了此错误:

  

ORA-00907:缺少右括号

代码如下(表名和属性用罗马尼亚语表示):

CREATE TABLE Curse (
id_cursa int  NOT NULL,
id_tura int  NULL,
moment_inceput_cursa timestamp  NULL,
moment_sfarsit_cursa timestamp  NULL,
adresa_initiala text  NULL,
GPS_punct_start text  NULL,
adresa_destinatie text  NULL,
destinatie_GPS text  NULL,
stare_cursa char NOT NULL DEFAULT 0,
modalitate_plata int  NULL,
pret decimal  NULL,
CONSTRAINT Curse_pk PRIMARY KEY (id_cursa)
);

2 个答案:

答案 0 :(得分:1)

实际的错误是DEFAULT子句位于NOT NULL子句之前。所以这是正确的语法:

stare_cursa char DEFAULT 0 NOT NULL

除此之外,您还需要将text数据类型更改为varchar2(1000)之类的数据或所需的长度。

答案 1 :(得分:0)

一些反对意见:

  • TEXT数据类型无效;我使用了VARCHAR2(100);可能更大,或CLOB
  • 正确的顺序是DEFAULT 0 NOT NULL(不是NOT NULL DEFAULT 0
  • 虽然这不是错误,但您不必指定允许使用NULL

SQL> CREATE TABLE curse(
  2    id_cursa               INT NOT NULL,
  3    id_tura                INT NULL,
  4    moment_inceput_cursa   TIMESTAMP NULL,
  5    moment_sfarsit_cursa   TIMESTAMP NULL,
  6    adresa_initiala        VARCHAR2(100)NULL,
  7    gps_punct_start        VARCHAR2(100)NULL,
  8    adresa_destinatie      VARCHAR2(100)NULL,
  9    destinatie_gps         VARCHAR2(100)NULL,
 10    stare_cursa            CHAR DEFAULT 0 NOT NULL,
 11    modalitate_plata       INT NULL,
 12    pret                   DECIMAL,
 13    CONSTRAINT curse_pk PRIMARY KEY(id_cursa)
 14  );

Table created.

SQL>