我正在调用带有int
类型的OUTPUT参数的SP,但是似乎返回的参数仍然在varchar
中:
Map<String, Object> map = new SimpleJdbcCall(jdbcTemplate)
.withProcedureName("spThatReturnsInt")
.declareParameters(new SqlOutParameter("ret", Types.INTEGER))
.withoutProcedureColumnMetaDataAccess()
.execute();
以上代码以SQL异常结束:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Error converting data type nvarchar to int.
SP定义为:
CREATE PROCEDURE spThatReturnsInt @ret int OUTPUT
这似乎引发了sql异常。看起来该过程并没有真正返回int值,而是出现了异常。请尝试在SQL Server Management Studio中运行它,并确保它确实在运行并返回整数。
经过一些调试后,当我从SqlOutParameter
更改为SqlInOutParameter
时,问题就消失了。即:]]
Map<String, Object> map = new SimpleJdbcCall(jdbcTemplate) .withProcedureName("spThatReturnsInt") .declareParameters(new SqlInOutParameter("ret", Types.INTEGER)) .withoutProcedureColumnMetaDataAccess() .execute();
我不知道为什么,它正常工作。