PostgreSQL documentation recomienda utilizar un CallableStatement
para llamar a los procedimientos almacenados.procedimientos almacenados como consultas: CallableStatement vs. PreparedStatement
En el caso de un procedimiento almacenado que devuelve un conjunto de filas, ¿cuáles son las diferencias entre el uso CallableStatement
:
String callString = "{ call rankFoos(?, ?) }";
CallableStatement callableStatement = con.prepareCall(callString);
callableStatement.setString(1, fooCategory);
callableStatement.setInt(2, minimumRank);
ResultSet results = statement.executeQuery();
y usando un regulares 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();
como yo lo entiendo, CallableStatement
ofertas una forma de llamar a los procedimientos almacenados que es independiente del idioma. Esto no me importa, ya que sé que estoy usando PostgreSQL. Por lo que yo puedo ver, la ventaja obvia de usar el PreparedStatement
es una consulta más versátil, tratando el procedimiento almacenado como una mesa, sobre la que puedo usar WHERE
, JOIN
, ORDER BY
, etc.
¿Hay aspectos o diferencias entre los métodos que me falta? En el caso de un procedimiento almacenado utilizado como consulta, ¿cuál es el recomendado?
Buena idea. ¡Gracias! –