Câu hỏi của tôi rất giống như Getting the return value of a PL/SQL function via HibernateLàm thế nào để gọi một hàm Oracle từ Hibernate với tham số trả về?
Tôi có một chức năng thực hiện một số sửa đổi nội bộ và nó trả về một giá trị.
Ý tưởng ban đầu là để làm một cái gì đó như thế này:
protected Integer checkXXX(Long id, Long transId)
throws Exception {
final String sql = "SELECT MYSCHEMA.MYFUNC(" + id + ", "
+ transId + ") FROM DUAL";
final BigDecimal nr = (BigDecimal) this.getHibernateTemplate()
.getSessionFactory().getCurrentSession().createSQLQuery(sql)
.uniqueResult();
return nr.intValue();
}
Thật không may điều này không làm việc với Oracle. Cách được khuyến nghị để làm điều gì đó như thế này?
Có cách nào để trích xuất các biến được khai báo từ trong câu lệnh của tôi không?
bạn có muốn cung cấp ví dụ không? Tôi là một chút mất làm thế nào để có được kết quả từ chức năng. Tôi có cần sử dụng tham số ngoài không? – Mauli
Tôi đã cung cấp một ví dụ ở trên. Tùy thuộc vào hàm của bạn/thủ tục lưu sẵn, bạn có thể cần phải sử dụng biểu mẫu yêu cầu khác trong 'prepareCall()' thay vào đó - tài liệu CallableStatement mô tả cả hai. – ChssPly76
@ ChssPly76: Tôi không bao giờ biết 'doWork (..)' tốt hơn nhiều so với '@ NamedNativeQuery' của Hibernate đòi hỏi hàm sproc/function để trả về một refcursor làm tham số đầu tiên (tham số out). –