Spring SqlOutParameter不遵循参数类型

问题描述 投票:0回答:2

我正在调用带有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-server spring tsql spring-jdbc
2个回答
0
投票

这似乎引发了sql异常。看起来该过程并没有真正返回int值,而是出现了异常。请尝试在SQL Server Management Studio中运行它,并确保它确实在运行并返回整数。


0
投票

经过一些调试后,当我从SqlOutParameter更改为SqlInOutParameter时,问题就消失了。即:]]

Map<String, Object> map = new SimpleJdbcCall(jdbcTemplate)
        .withProcedureName("spThatReturnsInt")
        .declareParameters(new SqlInOutParameter("ret", Types.INTEGER))
        .withoutProcedureColumnMetaDataAccess()
        .execute();

我不知道为什么,它正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.