0

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

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

爪哇代码:

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 驱动程序,它工作正常,但我无法将其用作解决方案,因为我遇到了其他问题。

4

2 回答 2

0

使用 executeUpdate 解决了这个问题:

String sp = "sp_test";
Statement stmt = con.createStatement();
stmt.executeUpdate(sp);
stmt.close();
于 2011-08-19T13:17:50.303 回答
0

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

于 2012-02-01T03:03:23.430 回答