Câu trả lời sửa đổi lần thứ 2 của Bozho là gần nhưng không hoàn toàn ở đó. Tuy nhiên, nó đã dẫn tôi đến câu trả lời.
Lấy ví dụ mã mà tôi đã bắt đầu với chúng tôi kết thúc bằng:
CallableStatement proc = connection.prepareCall("{ ? = call dbo.mySproc() }");
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
int returnValue = proc.getInt(1);
Phần quan trọng ở đây là dấu "? =" Trước "lệnh gọi" trong prepareCall
hàm thiết lập một vị trí cho giá trị trả về và registerOutputParameter
. Nó phải được đăng ký dưới dạng Số nguyên, vì giá trị trả về luôn là int (ít nhất là trong SQL Server, có thể nó khác trong các DB khác). Do đó, bạn phải lấy nó bằng cách sử dụng getInt
. Tôi đã thử nghiệm phương pháp này và nó hoạt động.