2014-01-06 23 views
0

我想執行下面的查詢:當我在Oracle執行它如何解決在java中寫入數據定義操作?

String sql="create or replace view toprecords as select * from(select directory_name,file_name,sum(value) from tfidfvalues where directory_name =? group by(directory_name,file_name) order by(sum(value)) desc) where rownum<=10"; 
         stmt = con.prepareStatement(sql); 
         stmt.setString(1, directory_names.get(x)); 

         stmt.executeUpdate(); 

它工作正常,但是當我嘗試實現它在Java它顯示了以下錯誤:

java.sql.SQLException: ORA-01027: bind variables not allowed for data definition operations 

SO如何克服這種異常?

+2

*「當我在oracle中執行它時,它工作正常」* ......你在「oracle」中如何使用準備好的語句? –

+3

錯誤很明顯,你不能在'DDL'操作中綁定變量 – nachokk

+0

@BrianRoach在oracle意味着查詢工作正常,但在準備語句中嵌入時顯示錯誤 –

回答

0

消息說明了這一切,您不能在DDL操作中使用綁定變量。

你需要做的是創建沒有where子句的視圖,而是在查詢視圖時應用過濾。

+0

或者只是修改Java中的SQL字符串。儘管如果輸入不可信,這可能會導致更大的問題,顯然。 –

+0

@布萊恩:沒錯,但那麼你也只是用這種方法來解決根本問題。 – Keppil

+0

@Keppil我完全得到你想說的話。你能否詳細說明我應該如何修改我的查詢 –

相關問題