Ограничение на вставку хранимых процедур Sybase с драйвером JDBC

У меня возникают проблемы с хранимыми процедурами, которые содержат множество операторов вставки при использовании драйвера Sybase jdbc. После 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 вставок процедура возвращается. Выполнение select count(*) из tableTest впоследствии возвращает число 58. Исключения SQLException не выбрасываются. Я попытался поместить транзакцию начала/фиксации вокруг вставки, но это не имело значения. Я также попробовал драйвер jodbc, и он отлично работает, но я не могу использовать его в качестве решения, потому что у меня были другие проблемы с ним.


person PM2    schedule 17.08.2011    source источник
comment
Я не могу проверить себя, но попробуйте установить set nocount в заголовок proc.   -  person kolchanov    schedule 17.08.2011


Ответы (2)


Использование executeUpdate решило проблему:

String sp = "sp_test";
Statement stmt = con.createStatement();
stmt.executeUpdate(sp);
stmt.close();
person PM2    schedule 19.08.2011

Я считаю, что если вы вставите con.commit() сразу после stmt.execute(), это тоже сработает.

person keith    schedule 01.02.2012