2013-06-24 17 views
7

Mam procedurę serwera SQL 2008, który wraca jeden z parametrów, daję wezwanie do niego z java. Mój kod znajduje się poniżejcom.microsoft.sqlserver.jdbc.SQLServerException: Niepoprawna składnia w pobliżu „@ P0”

zapisanego kodu procedury jest

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

Wywoływanie Java Code jest

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

ale infected.execute(); generuje następujący błąd

com.microsoft.sqlserver.jdbc.SQLServerException: Niepoprawna składnia w pobliżu '@ P0'

proszeni o przypomnienie mi, gdzie jest problemem

+0

Która linia wyzwala błąd? – GregHNZ

+0

infected.execute(); – WiXXeY

+0

To coś dobrego dla Ciebie: https://groups.google.com/forum/#!msg/mybatis-user/DxLHOn8LZU0/dFRgaIL7Ez8J ?? Zasadniczo ustawiaj nawiasy klamrowe, np. "{Call countInfected (?)}" (Mój serwer SQL jest wznoszący toast, więc nie mogę sprawdzić). – GregHNZ

Odpowiedz

10

Jak sugeruje this link ofiarował @GregHNZ, SQL Server wymaga zestawu nawiasów klamrowych wokół połączenia.

Linia w kodzie będzie wyglądać następująco:

infected = con.prepareCall("{ call countInfected(?) }"); 
Powiązane problemy