La mia domanda è molto simile a Getting the return value of a PL/SQL function via HibernateCome chiamare una funzione Oracle da Hibernate con un parametro di ritorno?
Ho una funzione che esegue alcune modifiche internamente e restituisce un valore.
L'idea originale era quella di fare qualcosa di simile:
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();
}
Purtroppo questo non funziona con Oracle. Qual è il modo consigliato per fare qualcosa di simile?
Esiste un modo per estrarre le variabili dichiarate dall'interno della mia istruzione?
ti dispiacerebbe fornirti un esempio? Sono un po 'perso come ottenere il risultato dalla funzione. Devo usare un parametro out? – Mauli
Ho fornito un esempio sopra. A seconda della funzione/stored procedure potrebbe essere necessario utilizzare l'altro modulo di chiamata all'interno di 'prepareCall()' invece - la documentazione di CallableStatement descrive entrambi. – ChssPly76
@ ChssPly76: Non ho mai saputo di 'doWork (..)' molto meglio di '@ NamedNativeQuery 'di Hibernate che richiede che sproc/function restituisca un refcursor come primo parametro (il parametro out). –