2011-08-17 1 views
0

Sybase의 jdbc 드라이버를 사용할 때 insert 문이 많은 저장 프로 시저에 문제가 있습니다. 50-60 삽입 후 저장된 프로 시저가 실행을 중지하고 반환합니다. 아래 코드를 참조하십시오.Sybase 저장 프로 시저 JDBC 드라이버에 대한 삽입 제한

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 드라이버를 사용해 보았지만 정상적으로 작동하지만 다른 문제가 있기 때문에이 드라이버를 솔루션으로 사용할 수 없습니다.

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

자신을 확인할 수 없지만 "set nocount on"을 proc 헤더에 넣으려고합니다. – kolchanov

답변

0

문제를 해결했다.

0

당신이 con.commit() 즉시 stmt.execute() 후 너무 일하는 것이 삽입하면 내가 믿는 : executeUpdate의 사용