Я знаю, что для более чем одного результата у вас нет большого выбора для использования параметров out, но мне интересно, в чем разница между следующими двумя случаями, когда есть один параметр out.
Скажем, у меня есть две хранимые процедуры:
CREATE PROCEDURE no_out_params(IN foo INT)
BEGIN
SELECT foo + 1 as result;
END
и
CREATE PROCDURE with_out_params(IN foo INT, OUT result INT)
BEGIN
SET result = foo + 1;
END
Затем, используя JDBC, я могу:
CallableStatement c1 = conn.prepareCall("{ call no_out_params(?)}");
c1.setInt(1, 5);
ResultSet rs = c1.executeQuery();
if (rs.next()) {
return rs.getInt("result"); // or rs.getInt(1)
}
или
CallableStatement c1 = conn.prepareCall("{ call with_out_params(?, ?)}");
c1.setInt(1, 5);
c1.registerOutParameter(2, Types.INT);
c1.executeQuery();
return c1.getInt(2);
Предполагая, что вы правильно закрываете все в try / finally (опущено для краткости), дает ли метод non-out параметр какое-либо преимущество? Если нет, то разумно ли предполагать, что всегда следует использовать параметры (хотя бы для обеспечения согласованности в случаях, когда имеется более одного результата)?