如何从 Spring Jdbc 中的存储过程中读取返回值(没有输出参数)?
我正在使用 Sybase ASE 数据库。
程序示例:
CREATE PROCEDURE dbo.procedureA (
@a int
)
as
begin
IF EXISTS (SELECT 1 FROM dbo.T WHERE a = @a)
return 1
ELSE
return -1
end
如何从 Spring Jdbc 中的存储过程中读取返回值(没有输出参数)?
我正在使用 Sybase ASE 数据库。
程序示例:
CREATE PROCEDURE dbo.procedureA (
@a int
)
as
begin
IF EXISTS (SELECT 1 FROM dbo.T WHERE a = @a)
return 1
ELSE
return -1
end
参考:http ://www.databaseskill.com/1270151/ 关键点是:SimpleJdbcCall.withReturnValue() 指示 SimpleJdbcCall 对象将返回值放入带有键“RETURN_VALUE”的结果映射中。所以你可以像 (Integer)simpleJdbcCall.execute().get("RETURN_VALUE") 一样访问它
对于 Sybase,不必声明 SqlOutParameter "RETURN_VALUE"
处理此问题的最佳方法是使用Spring-Jdbc 项目中的SimpleJdbcCall。
使用 SimpleJdbcCall,您可以为此目的声明 in 和 out 参数。
你可以这样做:
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(dataSource);
simpleJdbcCall.withCatalogName("dbo");
simpleJdbcCall.withProcedureName("procedureA ");
simpleJdbcCall.setAccessCallParameterMetaData(false);
simpleJdbcCall.declareParameters(new new SqlOutParameter("a",Types.NUMERIC));
simpleJdbcCall.execute();
更多信息在这里
希望能帮助到你。
这可能会有所帮助,尽管我自己还没有尝试过;
public MyStoredProc(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate, "mystoredproc");
setFunction(true);
declareParameter(new SqlOutParameter("Result", Types.NUMERIC));
declareParameter(new SqlInOutParameter("otherparam1", Types.INTEGER));
declareParameter(new SqlParameter("otherparam2", Types.INTEGER));
allowsUnusedParameters();
compile();
}