Sybase存储过程插入限制与JDBC驱动程序

时间:2011-08-17 00:04:05

标签: java sql jdbc sqlanywhere

使用Sybase的jdbc驱动程序时,我遇到了包含大量insert语句的存储过程的问题。在50-60次插入之后,存储过程将停止执行并返回。请参阅下面的代码。

我正在使用Sybase Anywhere 10及其jconn2.jar,但也尝试过jconn3.jar。

java代码:

String sp = "sp_test";
Statement stmt = con.createStatement();
stmt.execute(sp);
stmt.close();

存储过程:

create procedure dba.sp_test()
as
begin
  declare @lnCount integer
  select @lnCount = 1
  while (@lnCount <= 1000 )
    begin
      insert into tableTest (pk) values (@lnCount)
      select @lnCount = @lnCount + 1
    end
end

58次插入后,程序返回。之后从tableTest执行select count(*)会返回58的计数。不会抛出SQLExceptions。我尝试在插入周围放置一个开始/提交事务,但它没有什么区别。我也尝试了jodbc驱动程序,它工作正常,但我无法使用它作为解决方案,因为我有其他问题。

2 个答案:

答案 0 :(得分:0)

使用executeUpdate解决了问题:

String sp = "sp_test";
Statement stmt = con.createStatement();
stmt.executeUpdate(sp);
stmt.close();

答案 1 :(得分:0)

我相信如果您在con.commit()之后立即插入stmt.execute()也会有效。