我有这段代码可以使用 JDBC 对 Sybase DB 运行存储过程:
CallableStatement stmt = connection.prepareCall("{ ? = call mysproc(?,?,?) }");
// call setXXX for each input param
stmt.registerOutParameter("return", Types.INTEGER);
stmt.execute();
StringBuilder builder = new StringBuilder();
SQLWarning warn = stmt.getWarnings();
while (warn != null) {
builder.append(warn.getMessage());
warn = warn.getNextWarning();
}
存储过程被执行,但没有返回任何警告,即使存储过程调用 PRINT,如果我手动运行它,我可以看到它。
如果我更改execute()
为executeUpdate()
then 我会收到警告,但可能发生的情况是存储过程也返回 a ResultSet
,在这种情况下,由于意外结果,调用失败。不幸的是,无法预先知道调用将返回什么,但同时我需要收集更新的行数和警告。
有什么建议么?