Sybase DBに対してJDBCを使用してストアドプロシージャを実行する次のコードがあります。
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()
、警告が表示されますが、ストアド プロシージャも を返す可能性がありますResultSet
。この場合、予期しない結果のために呼び出しが失敗します。残念ながら、呼び出しが何を返すかを事前に知る方法はありませんが、同時に、更新された行の数と警告を収集する必要があります。
助言がありますか?