PostgreSQL documentation建议使用CallableStatement
来调用存储过程。作为查询的存储过程:CallableStatement vs. PreparedStatement
在返回行集的存储过程的情况下,有什么用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
报价一种与语言无关的调用存储过程的方法。这对我来说并不重要,因为我知道我在使用PostgreSQL。据我所看到的,使用PreparedStatement
的明显优势是更通用的查询,处理存储过程作为一个表,关于这一点我可以用WHERE
,JOIN
,ORDER BY
等
是否有问题或分歧我错过了哪些方法?在作为查询使用存储过程的情况下,推荐使用?
良好的洞察力。谢谢! –