PostgreSQL documentation đề xuất sử dụng một số CallableStatement
để gọi thủ tục được lưu trữ.các thủ tục được lưu trữ dưới dạng truy vấn: CallableStatement so với PreparedStatement
String callString = "{ call rankFoos(?, ?) }";
CallableStatement callableStatement = con.prepareCall(callString);
callableStatement.setString(1, fooCategory);
callableStatement.setInt(2, minimumRank);
ResultSet results = statement.executeQuery();
Và việc sử dụng thường xuyên 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();
Theo tôi được biết, CallableStatement
Mời
Trong trường hợp của một thủ tục lưu trữ mà trả về một rowset, sự khác biệt giữa việc sử dụng CallableStatement
là gì một cách bất khả tri về ngôn ngữ gọi thủ tục được lưu trữ. Điều này không quan trọng với tôi, vì tôi biết tôi đang sử dụng PostgreSQL. Theo như tôi thấy, lợi thế rõ ràng của việc sử dụng các PreparedStatement
là một truy vấn linh hoạt hơn, xử lý các thủ tục lưu trữ như một bảng, trên đó tôi có thể sử dụng WHERE
, JOIN
, ORDER BY
vv
Có khía cạnh hoặc khác biệt giữa các phương pháp mà tôi đang thiếu? Trong trường hợp của một thủ tục được lưu trữ được sử dụng như một truy vấn, được khuyến nghị?
Thông tin chi tiết tốt. Cảm ơn! –