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を返します。データベースツールを使用して同じクエリを実行すると、正しく0が返されます。
更新が機能し、テーブルが変更されます。戻り値は3です。私には完全にランダムに見えます。
私はこれを正しい方法でやっていますか?足りないものはありますか?
それが重要な場合は、Sybase独自のドライバjConnect7を使用しています。
ありがとう。