com.microsoft.sqlserver.jdbc.SQLServerException: la valeur n'est pas définie pour le paramètre

Je reçois parfois cette exception seulement, comme une fois sur 100 appels. J'ai cherché des solutions mais je ne pouvais pas comprendre. La procédure stockée prend une input. Le pilote que j'utilise est sqljdbc4 version 4.0

CREATE PROCEDURE [dbo].[PROC_CATEGORY_LIST] @USERID INT 

et j'ai réglé le paramètre comme suit

  "EXEC PROC_CATEGORY_LIST ?" callableStatement.setInt(1, userId); resultSet = callableStatement.executeQuery(); 

Je reçois l'exception suivante

 The value is not set for the parameter number 2. com.microsoft.sqlserver.jdbc.SQLServerException: The value is not set for the parameter number 2. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.buildParamTypeDefinitions(SQLServerPreparedStatement.java:260) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.buildPreparedSsortingngs(SQLServerPreparedStatement.java:219) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doPrepExec(SQLServerPreparedStatement.java:612) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:400) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.java:233) at com.sun.proxy.$Proxy2.executeQuery(Unknown Source) 

Est-ce que quelqu'un a fait face à ce problème. Si oui, quelle pourrait être la solution possible?