2010-12-07 27 views
10

Açık planını Java kullanarak nasıl alabileceğimi merak ediyorum. Buna ihtiyacımın nedeni, özel kullanıcıların rapor hazırlayabileceği bir çerçeveye sahip olmamızdır. Bu raporlar bazen sinek üzerinde açıklamak istediğimiz ve maliyetini depolamak istediğimiz büyük sorgulamalar oluşturuyor. Bu şekilde daha sonra yüksek maliyet sorgularını analiz edebilir ve optimize edebiliriz. Bana yasadışı sütun istisna verirJDBC Oracle - Sorgu için sorgu açıkla planını ayarlama

örnek kod:

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)); 
     } 

cevap

14

bunu kullanın:

 
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

teşekkür ederiz! Bu çalışıyor. Tüm plan tablosu yerine sadece maliyeti nasıl alacağınızı biliyor musunuz? –

+3

dbms_xplan.display() belgesine bir göz atın. İhtiyacınız olan bilgileri seçmek için parametrelere geçiş yapabilirsiniz. –