2010-11-24 30 views
0


javaを使用してテーブル関数を作成できる場合は、テスト目的で単純なSQL文を使用しました。
ただし、関数の作成が完了するまでに非常に時間がかかり、他のdbユーザーにタイムアウトが発生します。
ご意見はありますか?私がのSQLServer 2008を使用してい
は、すべてのヘルプは高く評価されてSQLを使用してSQL Serverテーブル関数を作成する

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; 

を表現します。

おかげで、

エルマー

+0

データベースドライバを使用していますか?それを変更しようとしましたか?ボトルネックはどこにあるのか知っていますか?それはSQL Serverにありますか?確認するためにwiresharkを実行してみてください。 – javamonkey79

+0

私はMicrosoft SQL Server JDBC Driver 2.0を使用しています。私はSQL Serverの管理スタジオで関数を作成しようとし、それは正常に働いた。私はwiresharkに精通していない。 – Elmer

答えて

0

conn.setAutoCommit(false)を設定する行があります。
関数の作成の最後に、私は単にconn.commit()を発行します。

ビッグおかげでとにかく....

エルマー

関連する問題