2011-08-17 7 views
0

Je rencontre des problèmes avec les procédures stockées qui contiennent beaucoup d'instructions d'insertion lors de l'utilisation du pilote jdbc de Sybase. Après 50 à 60 insertions, la procédure stockée arrête l'exécution et revient. Voir le code ci-dessous. J'utilise Sybase Anywhere 10 et jconn2.jar, mais j'ai aussi essayé jconn3.jar.Limite d'insertion de procédure stockée Sybase avec le pilote JDBC

code java:

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

procédure stockée:

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 

Après 58 insertions les retours de procédure. Effectuer un comptage select (*) à partir de tableTest renvoie ensuite un nombre de 58. Aucune exception SQLException n'est levée. J'ai essayé de mettre une transaction begin/commit autour de l'insert, mais cela n'a pas fait de différence. J'ai aussi essayé le pilote jodbc et ça marche bien, mais je ne suis pas capable d'utiliser ça comme une solution parce que j'ai eu d'autres problèmes avec ça.

+0

Je ne peux pas vérifier moi-même, mais essayez de mettre "set nocount on" dans l'entête de proc. – kolchanov

Répondre

0

En utilisant executeUpdate a résolu le problème:

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

Je crois que si vous insérez con.commit() immédiatement après stmt.execute() fonctionnerait aussi.

Questions connexes