В чем разница между использованием параметров out и выборкой результатов по столбцам в хранимых процедурах, которые возвращают один результат, вызываемый через JDBC? - PullRequest
1 голос
/ 14 октября 2010

Я знаю, что для более чем одного результата у вас нет большого выбора для использования параметров 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 параметр какое-либо преимущество? Если нет, то разумно ли предполагать, что всегда следует использовать параметры (хотя бы для обеспечения согласованности в случаях, когда имеется более одного результата)?

1 Ответ

1 голос
/ 14 октября 2010

При условии, что вы правильно закрываете все в try / finally (опущено для краткости), дает ли метод с параметрами non-out какое-либо преимущество?

Преимущество заключается в возможности получитьнабор результатов (на любом языке, Java / и т. д.) без необходимости определения всех параметров OUT (дополнительная работа без значения).

Если вы возвращаете только одно значение, возможно, вы захотите увидеть, еслиФункция будет работать вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...