хранил процедуры в виде запросов: CallableStatement vs. PreparedStatement

PostgreSQL для вызова хранимых процедур рекомендуется использовать CallableStatement .

В случае хранимой процедуры, возвращающей набор строк, каковы различия между использованием CallableStatement:

String callString = "{ call rankFoos(?, ?) }";
CallableStatement callableStatement = con.prepareCall(callString);
callableStatement.setString(1, fooCategory);
callableStatement.setInt(2, minimumRank);
ResultSet results = statement.executeQuery();

и использованием обычного PreparedStatement:

String queryString = "SELECT FooUID, Rank FROM rankFoos(?, ?);";
PreparedStatement preparedStatement = connection.prepareStatement(queryString);
preparedStatement.setString(1, fooCategory);
preparedStatement.setInt(2, minimumRank);
ResultSet results = statement.executeQuery();

Как я понимаю, CallableStatement предлагает диагностический способ вызова хранимых процедур на языке ...

CallgreSQL документация рекомендует использовать CallableStatement для вызова хранимых процедур. Для меня это не имеет значения, так как я знаю, что использую PostgreSQL. Насколько я вижу, очевидным преимуществом использования PreparedStatement является более универсальный запрос, рассматривающий хранимую процедуру как таблицу, на которой я могу использовать WHERE, JOIN, ORDER BY и др.

Есть ли аспекты или различия между методами, которых мне не хватает? В случае хранимой процедуры, используемой в качестве запроса, что рекомендуется?

13
задан Paul Bellora 5 October 2012 в 12:59
поделиться