2013-01-16 33 views
-3

你能帮我吗?我有同样的问题,我不能与此表isporuke我有一个907的问题解决它ORA-00907问题:缺少右括号

create table minimarketi (id number(6) constraint min_id_pk primary key 
    , ime varchar2(40) not null 
    , adresa varchar2(100) 
    , grad varchar2(30) 
); 

create table zahtjevi (id_minimarketa number(6) 
    , rbr_zahtjeva number(6) 
    , datum_izdavanja date 
    , constraint zaht_pk primary key(id_minimarketa, rbr_zahtjeva) 
    , constraint zaht_min_fk foreign key(id_minimarketa) references minimarketi(id) 
); 

create table artikli (sifra number(6) 
    , constraint art_sifra_pk primary key(sifra) 
    , naziv varchar2(100) not null 
); 

create table stavke_zahtjeva (id_minimarketa number(6) 
    , rbr_zahtjeva number(6) 
    , sifra_artikla number(6) 
    , kolicina number(6) not null 
    , constraint stavke_zahtjeva_pkl 
     primary key(id_minimarketa, rbr_zahtjeva, sifra_artikla) 
    , constraint stav_zaht_idrbr_fk 
    foreign key(id_minimarketa, rbr_zahtjeva) 
    references zahtjevi(id_minimarketa, rbr_zahtjeva) 
    , constraint stav_art_fk 
    foreign key(sifra_artikla) 
    references artikli(sifra) 
); 

create table isporuke (rbr_isporuke number(6) 
    , id_minimarketa number(6) 
    , rbr_zahtjeva number(6) 
    , datum izdavanja date 
    , constraint isporuke_pk 
     primary key(rbr_isporuke, id_minimarketa, rbr_zahtjeva) 
    , constraint ispo_zaht_fk 
     foreign key(id_minimarketa, rbr_zahtjeva) 
     references zahtjevi(id_minimarketa, rbr_zahtjeva) 
); 

+2

格式化您的代码在帮助解决语法错误方面有很长的路要走。 –

回答

1

以下是如何调试这些问题。

首先,每次尝试一个语句。而不是尝试所有五个CREATE TABLE语句,尝试第一个,看看它是否通过。然后尝试下一个。你正在把它缩小到某种说法。

现在你知道哪个语句有一个缺失的括号。看看左括号,看看它的对应右括号是什么。它与您认为的相符吗?继续浏览所有开放的对象并找到其匹配的paren。最终你会发现没有与之相匹配的开场白。

此外,清理您的代码,以便它不是全部在一行上。这是更难调试此:

create table minimarketi (id number(6) constraint min_id_pk primary key, ime varchar2(40) not null, adresa varchar2(100), grad varchar2(30)); 

,但是当它的格式化,像这样它看得多:

create table minimarketi (
    id number(6) constraint min_id_pk primary key, 
    ime varchar2(40) not null, 
    adresa varchar2(100), 
    grad varchar2(30) 
); 
2

问题是这样的带桌子isporuke。你正在创建你在列表中有一个空格。

您有:

datum izdavanja date, 

但你应该有:

datum_izdavanja date, 

所以,你的脚本将是:

create table isporuke 
(
    rbr_isporuke number(6), 
    id_minimarketa number(6), 
    rbr_zahtjeva number(6), 
    datum_izdavanja date, 
    constraint isporuke_pk primary key(rbr_isporuke, id_minimarketa, rbr_zahtjeva), 
    constraint ispo_zaht_fk foreign key(id_minimarketa, rbr_zahtjeva) 
    references zahtjevi(id_minimarketa, rbr_zahtjeva) 
); 

SQL Fiddle with Demo

我发现这个通过添加每个标签单独对脚本进行编译以确保它能够编译。通过分别运行每个代码,可以消除正在工作的代码并缩小错误的范围。