2

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。この場合、予期しない結果のために呼び出しが失敗します。残念ながら、呼び出しが何を返すかを事前に知る方法はありませんが、同時に、更新された行の数と警告を収集する必要があります。

助言がありますか?

4

0 に答える 0