Moje pytanie jest bardzo podobne do: Getting the return value of a PL/SQL function via HibernateJak wywołać funkcję Oracle z Hibernate z parametrem zwracającym?
Mam funkcję, która wykonuje pewne modyfikacje wewnętrznie i zwraca wartość.
Oryginalny pomysł żeby zrobić coś takiego:
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();
}
Niestety to nie działa z Oracle. Jaki jest zalecany sposób zrobienia czegoś takiego?
Czy istnieje sposób wyodrębniania zadeklarowanych zmiennych z mojego wyciągu?
Czy mógłbyś podać przykład? Jestem trochę zagubiony, jak uzyskać wynik z funkcji. Czy muszę użyć parametru out? – Mauli
Podałem przykład powyżej. W zależności od funkcji/procedury składowanej może zaistnieć potrzeba użycia innego formularza wywołania w ramach metody "prepareCall()" - dokumentacja CallableStatement opisuje oba. – ChssPly76
@ ChssPly76: Nigdy nie wiedziałem o 'doWork (..)' o wiele lepszym niż '@NamedNativeQuery' Hibernate'a, który wymaga, aby funkcja/proces zwracała refkursor jako pierwszy parametr (parametr out). –