2013-06-24 24 views
7

Ich habe eine SQL-Server-2008-Prozedur, die einen out-Parameter zurückgibt, ich gebe Anruf von Java. Mein Code untencom.microsoft.sqlserver.jdbc.SQLServerException: Falsche Syntax in der Nähe von '@ P0'

Stored Procedure Code gegeben ist

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

Java-Code aufrufen

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

aber infected.execute ist(); werden die folgenden Fehler zu erzeugen

com.microsoft.sqlserver.jdbc.SQLServerException: falsche Syntax nahe '@ P0'

mich freundlich führen, wo Problem ist

+0

Welche Linie der Fehler auslöst? – GregHNZ

+0

infizierte.execute(); – WiXXeY

+0

Das ist gut für Sie: https://groups.google.com/forum/#!msg/mybatiser-user/DxLHOn8LZU0/dFRgaIL7Ez8J ?? Im Grunde genommen Klammern, wie diese "{call countInfected (?)}" (Mein SQL Server ist getoastet, so dass ich nicht überprüfen kann). – GregHNZ

Antwort

10

vorgeschlagen Wie this link dargebracht von @GregHNZ erfordert SQL Server eine Reihe von geschweiften Klammern um den Aufruf.

Die Zeile in Ihrem Code würde wie folgt aussehen:

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