2011-08-17 19 views
0

Sybaseのjdbcドライバを使用すると、多くの挿入ステートメントを持つストアドプロシージャに問題があります。 50〜60個の挿入後、ストアドプロシージャは実行を停止して戻ります。以下のコードを参照してください。SybaseのストアドプロシージャJDBCドライバの挿入制限

私は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のカウントが返されます。SQLExceptionがスローされることはありません。私は、インサートの周りにbegin/commitトランザクションを置こうとしましたが、違いはありませんでした。私もjodbcドライバを試してみましたが、うまくいきましたが、私はそれを他の問題があったので解決策として使用できません。 executeUpdateを使用して

+0

私は自分自身をチェックすることはできませんが、 "set nocount on"をprocヘッダーに入れてみてください。 – kolchanov

答えて

0

は、問題を解決:

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

stmt.execute()があまりにも仕事と後すぐcon.commit()を挿入すると、私は信じています。

関連する問題