通过java创建sql server表函数

问题描述:


如果可以通过java创建表函数,我使用了一个简单的sql语句来进行测试。
但是,创建函数需要很长时间才能完成并导致其他db用户超时。
有什么想法?
我使用SQLSERVER 2008速成通过java创建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 2010-11-24 05:46:55

还有那台conn.setAutoCommit(假)线;
在创建函数结束时,我只需发出conn.commit();

非常感谢反正....

埃尔默