procédures stockées sous forme de requêtes: CallableStatement vs PreparedStatement

Documentation PostgreSQL recommande l'utilisation d'un CallableStatement à appeler des procédures stockées.

Dans le cas d'une procédure stockée qui retourne un ensemble de lignes, quelles sont les différences entre l'utilisation de CallableStatement:

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

Et à l'aide d'un régulier 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();

Que je comprends, CallableStatement offre un indépendant de la langue de l'appel de procédures stockées. Ce n'est pas grave pour moi si, car je sais que je suis en utilisant PostgreSQL. Aussi loin que je peux voir, l'avantage évident de l'utilisation de la PreparedStatement est un plus polyvalent de la requête, le traitement de la procédure stockée comme une table, sur laquelle je peux utiliser WHERE, JOIN, ORDER BY, etc.

Sont là des aspects ou des différences entre les méthodes que je suis absent? Dans le cas d'une procédure stockée utilisée comme une requête, ce qui est recommandé?

OriginalL'auteur Paul Bellora | 2011-09-17