Ma question est très semblable à Getting the return value of a PL/SQL function via HibernateComment appeler une fonction Oracle depuis Hibernate avec un paramètre de retour?
J'ai une fonction qui fait quelques modifications en interne et renvoie une valeur.
L'idée originale était de faire quelque chose comme ceci:
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();
}
Malheureusement, cela ne fonctionne pas avec Oracle. Quelle est la manière recommandée de faire quelque chose comme ça?
Existe-t-il un moyen d'extraire des variables déclarées à partir de mon instruction?
pourriez-vous donner l'exemple? Je suis un peu perdu comment obtenir le résultat de la fonction. Ai-je besoin d'utiliser un paramètre out? – Mauli
J'ai fourni un exemple ci-dessus. En fonction de votre fonction/procédure stockée, vous devrez peut-être utiliser l'autre formulaire d'appel dans prepareCall() '. La documentation CallableStatement décrit les deux. – ChssPly76
@ ChssPly76: Je n'ai jamais connu 'doWork (..)' beaucoup mieux que '@ NamedNativeQuery' de Hibernate qui exige que le sproc/function retourne un refcursor comme premier paramètre (le paramètre out). –