8

我有一个返回一个输出参数的 SQL Server 2008 过程,我从 java 调用它。我的代码如下

存储过程代码是

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

Java 调用代码是

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

但感染了.execute(); 正在生成以下错误

com.microsoft.sqlserver.jdbc.SQLServerException:'@P0' 附近的语法不正确

请指导我哪里有问题

4

1 回答 1

11

正如@GregHNZ 提供的此链接所建议的那样,SQL Server 需要在调用周围使用一组花括号。

您的代码中的行如下所示:

infected = con.prepareCall("{ call countInfected(?) }");
于 2013-11-21T17:29:22.803 回答