2014-02-27 236 views
0

我試圖運行下面的Java 11g中的select查詢(使用瘦驅動程序),當我得到錯誤代碼時。 我的問題是爲什麼我得到這個錯誤?我認爲它必須是一個薄驅動程序的問題,但我無法弄清楚它可能是什麼,因爲它確實支持select querys ...請幫助我!ora-03001在java中運行select時未實現的功能

java.sql.SQLException: ora-03001 unimplemented feature

ORA版本:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 
PL/SQL Release 11.2.0.1.0 - Production 
"CORE 11.2.0.1.0 Production" 
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production 
NLSRTL Version 11.2.0.1.0 - Production 

查詢是:

PreparedStatement ps = c.getCon().prepareStatement(query); 
ResultSet rs = ps.executeQuery(); 

第i個跑:使用PreparedStatement和的executeQuery

query = "select e.eq_nr as \"Eqiptmentnummer\", f.file_name as \"Dateiname\" e.adress as \"Adresse\"," 
      + " e.city as \"Ort\", e.county as \"Bundesland\", e.zip_code as \"PLZ\"," 
      + " e.manufacturer as \"Hersteller\" f.doc_info as \"DOC INFO\"" 
      + " from elevators e join files f on(e.eq_nr = (select eq_nr from file_links where file_id = f.file_id))"; 

在SQL Developer的查詢,它給了我這個輸出(所有電梯及其相關文件),這是正確的:

eq_nr | file_name  |  adress | city |county| zip |manufaturer| note 
1000 testname1.pdf somestreet 12 Vienna Vienna 1200 OTIS test insert brown 1 
1000 testname2.pdf somestreet 12 Vienna Vienna 1200 OTIS test insert brown 2 
1000 testname4.pdf somestreet 12 Vienna Vienna 1200 OTIS test insert brown 4 
1001 testname.pdf somestreet 123 Vienna Vienna 1200 KONE test insert brown 
1001 testname3.pdf somestreet 123 Vienna Vienna 1200 KONE test insert brown 3 
1001 testname5.pdf somestreet 123 Vienna Vienna 1200 KONE test insert brown5 
1001 testname6.pdf somestreet 123 Vienna Vienna 1200 KONE test insert brown 6 

ASD SELECT * FROM電梯:

elevator id|   adress  | city | county | zip | manufacturer 
1000  somestreet 12 Vienna Vienna 1200 OTIS 
1001  somestreet 123 Vienna Vienna 1200 KONE 

SELECT * FROM文件:

[FILE_ID] [FILE_NAME] [FILE_PATH]  [FILE_TYPE] [LAST_CHANGED]   [ARCHIVE_FLAG][DOC_INFO] 
77  [testname.pdf] [C:\testname.pdf] [pdf] 27.02.14 19:08:39,720000000 0  [test insert brown] 
987  [testname1.pdf] [C:\testname1.pdf] [pdf] 27.02.14 19:08:55,195000000 0  [test insert brown 1] 
76523 [testname2.pdf] [C:\testname2.pdf] [pdf] 27.02.14 19:09:09,735000000 0  [test insert brown 2] 
123323 [testname3.pdf] [C:\testname3.pdf] [pdf] 27.02.14 19:09:35,912000000 0  [test insert brown 3] 
1232 [testname4.pdf] [C:\testname4.pdf] [pdf] 27.02.14 19:09:49,219000000 0  [test insert brown 4] 
8888212 [testname5.pdf] [C:\testname5.pdf] [pdf] 27.02.14 19:10:08,267000000 0  [test insert brown5 ] 
5678 [testname6.pdf] [C:\testname6.pdf] [pdf] 27.02.14 19:10:22,213000000 0  [test insert brown 6] 

從file_links選擇*:

eq_ nr  file_id valid 
1000 76523 0 
1000 1232 0 
1000 987 0 
1001 5678 0 
1001 8888212 0 
1001 123323 0 
1001 77 0 

回答

1

這可能只是複製粘貼問題。在您發佈的每個查詢中,您都缺少逗號之間的逗號

f.file_name as \"Dateiname\" e.adress as \"Adresse\", 

但上面的編輯沒有。

f.file_name as \"Dateiname\", e.adress as \"Adresse\", 

能這麼簡單嗎? ;)

+0

我不能相信我沒有看到那個明顯的錯誤..這個錯誤將我的焦點從這些問題拉開..謝謝 – PeterYoshi

0

我會假設加入/子選擇組合不是標準的。我建議像

query = "select e.eq_nr as \"Eqiptmentnummer\", f.file_name as \"Dateiname\" e.adress as \"Adresse\"," 
     + " e.city as \"Ort\", e.county as \"Bundesland\", e.zip_code as \"PLZ\"," 
     + " e.manufacturer as \"Hersteller\" f.doc_info as \"DOC INFO\"" 
     + " from elevators e" 
     + " join files f on (e.eq_nr = f.eq_nr)" 
     + " where e.eq_nr in (" 
     + " select f.eq_nr" 
     + " from files f" 
     + " join file_links fl" 
     + " where fl.file_id = f.file_id" 
     + ")"; 

編輯

query = "select e.eq_nr as \"Eqiptmentnummer\", f.file_name as \"Dateiname\", e.adress as \"Adresse\", e.city as \"Ort\", e.county as \"Bundesland\", e.zip_code as \"PLZ\", e.manufacturer as \"Hersteller\", f.doc_info as \"DOC INFO\"" 
    + " from elevators e" 
    + " join file_links fl on (e.eq_id = fl.eq_id)" 
    + " join files f on (f.file_id = fl.file_id)"; 
+0

沒有f.eq_nr [加入文件f on(e.eq_nr = F.EQ_NR)],它是一個多對多的關係,這就是爲什麼我有file_links表,其中eq_nr和f_id都是主鍵。 – PeterYoshi

+0

你是什麼意思的「不標準」?我建議你想瘦?因爲正如問題中提到的那樣,這個確切的查詢在sql developer – PeterYoshi

+0

中起作用這是我認爲我無法在我的腦海中驗證的嚴肅的SQL結構 - 如果這是標準的,對不起! – Smutje