3

如何从 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
4

3 回答 3

2

参考:http ://www.databaseskill.com/1270151/ 关键点是:SimpleJdbcCall.withReturnValue() 指示 SimpleJdbcCall 对象将返回值放入带有键“RETURN_VALUE”的结果映射中。所以你可以像 (Integer)simpleJdbcCall.execute().get("RETURN_VALUE") 一样访问它

对于 Sybase,不必声明 SqlOutParameter "RETURN_VALUE"

于 2014-08-19T19:49:57.660 回答
1

处理此问题的最佳方法是使用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();

更多信息在这里

希望能帮助到你。

于 2013-10-25T07:51:45.963 回答
-2

这可能会有所帮助,尽管我自己还没有尝试过;

http://forum.spring.io/forum/spring-projects/data/114859-return-value-of-stored-procs-using-storedprocedure-class-and-not-simplejdbccall

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();
}
于 2014-07-09T11:51:00.533 回答