Spring JDBCを使用してSybaseデータベース(ASE 15)上のいくつかのレガシーストアドプロシージャを呼び出そうとしています。Sybaseでストアドプロシージャを正しく呼び出す方法
私はかなりうまく動いていますが、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
}
}
}
は、ストアドプロシージャは非常に重要ではありませんが、更新を行い、常に私はいくつかのDBツールを使用して、同じクエリを実行する場合、私は正しく0を得る0を返します。 。
更新が機能し、テーブルが変更された場合、戻り値は3です。私にとっては完全にランダムに見えます。
これは正しい方法ですか?私は行方不明のものがありますか?
Sybaseの独自のドライバjConnect 7を使用しています。
ありがとうございました。
私はMySQLでより多くの機能を持っていますが、関数とprocsは非常に異なっていますが、sybaseではすべてのprocsが値を返すことができ、機能があるかどうかもわかりません。私はSybaseと同じだと思います。 とにかく、setFuncation(false)を指定すると戻り値はまったくありません。 –