我正在尝试使用 Spring JDBC 在 Sybase 数据库 (ASE 15) 上调用一些遗留存储过程。
我已经让它工作得很好,但我不知道如何从 proc 中获取返回值。
这是我得到的代码:
@Repository
public class SybaseDao extends StoredProcedure {
private static final String SQL = "db..proc_name";
private static final String RETURN_VALUE = "rc";
private static final String IN_DATA = "in_data";
@Autowired
public UpdateSybaseDao(DataSource dataSource) {
super(dataSource, SQL);
setFunction(true);
declareParameter(new SqlOutParameter(RETURN_VALUE, NUMERIC));
declareParameter(new SqlParameter(IN_DATA, NUMERIC));
compile();
}
public void update(Integer inData) {
Map<String, Object> inputs = new HashMap<String, Object>();
inputs.put(IN_DATA, inData);
Map<String, Object> results = execute(inputs);
Integer returnValue = (Integer) results.get(RETURN_VALUE);
if (returnValue > 0) {
// handle this error
}
}
}
存储过程不是很重要,但它会进行更新并始终返回 0。如果我使用一些 db 工具运行相同的查询,我会正确得到 0。
更新有效,表被更改,返回值为 3。对我来说,这看起来完全随机。
我这样做对吗?有什么我想念的吗?
如果这很重要,我正在使用 Sybase 的专有驱动程序 jConnect 7。
谢谢。