2010-12-07 74 views
10

我想知道如何使用Java獲取解釋計劃。我需要這個理由是因爲我們有一個框架,特殊用戶可以製作報告。這些報告有時候會產生很大的疑問,我們要在這個問題上進行解釋並存儲成本。通過這種方式,我們可以分析後期的高成本查詢並進行優化。JDBC Oracle - 爲查詢獲取解釋計劃

示例代碼,給了我非法列例外:

ResultSet rs = null; 
    try { 
     oracle = ConnectionManager.getConnection(ConnectionManager.Test); 
     pstmt = oracle.prepareStatement("begin execute immediate 
     'explain plan for SELECT 1 from Dual'; end;"); 
     rs = pstmt.executeQuery(); 
     while (rs.next()) { 
      System.out.println(rs.getString(1)); 
     } 

回答

14

使用此:

 
oracle = ConnectionManager.getConnection(ConnectionManager.Test); 
stmt = oracle.createStatement() 
stmt.execute("explain plan for SELECT 1 from Dual"); 
rs = stmt.executeQuery("select plan_table_output from table(dbms_xplan.display())"); 
while (rs.next()) 
{ 
    System.out.println(rs.getString(1)); 
} 
+0

謝謝!這工作。你知道如何獲取成本而不是整個計劃表嗎? – 2010-12-07 12:45:37