2013-01-16 67 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

我發現這個通過添加每個標籤單獨對腳本進行編譯以確保它能夠編譯。通過分別運行每個代碼,可以消除正在工作的代碼並縮小錯誤的範圍。