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 のカウントが返されます。スローされる SQLException はありません。挿入の周りに begin/commit トランザクションを配置しようとしましたが、違いはありませんでした。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 に答える