2010-11-24 10 views
0


Ich habe eine einfache SQL-Anweisung für Testzwecke verwendet, wenn es möglich ist, eine Tabellenfunktion durch Java zu erstellen.
Es dauert jedoch sehr lange, bis die Erstellung der Funktion abgeschlossen ist und andere Datenbankbenutzer eine Zeitüberschreitung ausführen.
Irgendwelche Gedanken?
Ich benutze SQLServer 2008 Expresscreate sql server table funktion durch java

try { 
     Statement statement = conn.createStatement(); 
     CallableStatement cs ; 
     String retValue ; 
     cs = conn.prepareCall("{? = call dbo.isTableFunctionExists(?)}"); 
     cs.registerOutParameter(1, Types.INTEGER); 
     lcString = "PAY_UDTF_"+this.textField1.getValue().toString() ; 
     cs.setString(2, lcString); 
     cs.execute(); 
     retValue = cs.getString(1); 
     if (retValue.equals("1")) { 
      System.out.println("EXISTS"); 
      lcSql = " ALTER "; 
     }else{ 
      System.out.println("NOT FOUND"); 
      lcSql = " CREATE "; 
     } 
     lcSql = lcSql + " FUNCTION [dbo].[" ; 
     lcSql = lcSql + lcString +"] (@pDate date)"; 
     lcSql = lcSql + " RETURNS TABLE AS RETURN ("; 
     lcSql = lcSql + " SELECT * FROM dbo.HR_EMPLOYMENT hre "; 
     lcSql = lcSql + " Where @pDate between hre.effective_start_date and hre.effective_end_date) "; 
     //statement.execute(lcSql); 
     statement.executeUpdate(lcSql); 
     statement.close(); 
     System.out.println("COMPLETED"); 
    } catch (Exception e) { 
     System.out.println("EXCEPTION"+e); 
    } 

    return null; 

Jede Hilfe sehr geschätzt wird.

Danke,

Elmer

+0

Welche Datenbank-Treiber verwenden Sie? Hast du versucht es zu ändern? Weißt du, wo der Flaschenhals ist? Ist es in SQL Server - versuchen Sie es mit Wireshark, um sicher zu sehen. – javamonkey79

+0

Ich verwende Microsoft SQL Server JDBC-Treiber 2.0. Ich habe versucht, die Funktion in SQL Server Management Studio und es hat gut funktioniert. Ich bin jedoch nicht mit Wireshark vertraut. – Elmer

Antwort

0

Es gibt eine Linie, die die conn.setAutoCommit (false) einstellt;
Am Ende der Erstellung der Funktion, geben Sie einfach conn.commit();

Big trotzdem danke ....

Elmer

Verwandte Themen