我从从从java代码调用存储过程的代码中收到以下错误:
异常跟踪{}org.springframework.jdbc.UncategorizedSQLException:
CallableStatementCallback;SQL[{call的未分类SQLException
测试。usp xxx_GetCompanyDetails(?)?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?)}];SQL状态[null];错误代码[0];值不是
为参数11设置;嵌套异常为
com.microsoft.sqlserver.jdbc.SQLServerException:未设置值
对于参数11。在
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
在
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
在
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
在
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1095)
在
org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1131)
应用程序部署在WAS8.5.5上,并使用jdbc驱动程序版本4.2。重新启动服务器时,此问题不再出现。生成的以下调用语句似乎不正确。有没有连续的逗号?他们之间。
{呼叫测试。usp xxx获取公司详细信息(?)?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?)}
存储过程有10个参数。以下是存储过程的定义:
CREATE PROCEDURE [test].[usp_xxx_GetCompanyDetails]
(
@ANumber int,
@CompanyId int,
@UserRole varchar(15),
@RequestId varchar(100),
@CompanyCode varchar(5),
@BaseSystem varchar(5),
@PType varchar(20),
@PId varchar(40),
@IsActive bit,
@responseData xml OUT
)
下面是调用存储过程的java代码。它正在使用spring数据进行调用。
private String executeProc(Integer aNumber,Integer companyId, String baseSystem,
String role,String companyCode,String requestId, String pType,String pId,
boolean isActive ) throws SQLException {
SQLXML responseData=null;
Map<String,Object> inputParams= new HashMap<>();
inputParams.put("ANumber", aNumber);
inputParams.put("CompanyId", companyId);
inputParams.put("UserRole", role);
inputParams.put("RequestId", requestId);
inputParams.put("CompanyCode", companyCode);
inputParams.put("BaseSystem", baseSystem);
inputParams.put("PType", pType);
inputParams.put("PId", pId);
inputParams.put("IsActive", isActive);
inputParams.put("ResponseData", responseData);
Map<String, Object> result = this.execute(inputParams);
String responseXMLString = ((SQLXML) result.get("ResponseData")).getString();
return responseXMLString;
}
可能出了什么问题。