2013-06-24 4 views
7

J'ai une procédure SQL Server 2008 qui retourne un paramètre out, je lui donne un appel de java. Mon code est donné ci-dessouscom.microsoft.sqlserver.jdbc.SQLServerException: syntaxe incorrecte près de '@ P0'

code de procédure stockée est

Create PROCEDURE countInfected @infected int out 
AS 
Select @infected = COUNT(*) from userInfo 
where userID NOT IN (Select userID from deletedInfo); 

du code Java Calling est

CallableStatement infected = null; 
infected = con.prepareCall("call countInfected(?)"); 
infected.registerOutParameter(1, java.sql.Types.INTEGER); 
infected.execute(); 
System.out.println("Infected"+ infected.getInt(1)); 

mais infected.execute(); génère l'erreur suivante

com.microsoft.sqlserver.jdbc.SQLServerException: syntaxe incorrecte près de '@ P0'

me conduiras bien voulu où le problème se

+0

Quelle ligne déclenche l'erreur? – GregHNZ

+0

infected.execute(); – WiXXeY

+0

Cela vous convient-il: https://groups.google.com/forum/#!msg/mybatis-user/DxLHOn8LZU0/dFRgaIL7Ez8J ?? Fondamentalement mis accolades autour, comme ceci "{appel countInfected (?)}" (Mon SQL Server est grillé donc je ne peux pas vérifier). – GregHNZ

Répondre

10

Comme suggéré par this link offrit par @GregHNZ, SQL Server nécessite un ensemble d'accolades autour de l'appel.

La ligne dans votre code ressemblerait à ceci:

infected = con.prepareCall("{ call countInfected(?) }");