好吧,我有一个带有下一个结构的pl / sql函数:
function Proc(SessionID SomeConst.TSessionID default null) return sys_refcursor is
rc sys_refcursor
我对pl / sql没有任何经验,但现在我必须以某种方式调用它。我知道这种程序:
procedure LogOn(UserName in varchar2, Password in varchar2, SessionID out varchar2)
必须像这样调用:
CallableStatement callableStatement = sessionFactory
.getCurrentSession().connection()
.prepareCall("call PREQUEST.LOGON(?,?,?)");
callableStatement.setString(1, userName);
callableStatement.setString(2, password);
callableStatement.registerOutParameter(3, OracleTypes.VARCHAR);
callableStatement.execute();
return callableStatement.getString(3);
但Proc
没有out
参数。怎么办?
UPD:
System.out.println(sessionFactory
.getCurrentSession()
.createSQLQuery(
"select Proc(:sessionId) from dual")
.setString("sessionId", sessionId).list().size());
我尝试了这个,但是控制台说:
org.hibernate.MappingException:没有JDBC类型的Dialect映射:-10
答案 0 :(得分:1)
Query query=session.createSQLQuery("select Proc('"+param+"') from dual");
List<MappedBean> result=query.list();
由于你的函数返回sys_refcursor
,所以得到一个bean MappedBean
来保存从函数返回的数据。