2014-09-18 5 views
0

Ну, у меня есть 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: -10

ответ

1
Query query=session.createSQLQuery("select Proc('"+param+"') from dual"); 
List<MappedBean> result=query.list(); 

Поскольку ваша функция возвращает sys_refcursor, получите bean, скажем MappedBean, который будет содержать данные, возвращаемые функцией.

+0

MappedBean должен быть объектом спящего режима? – Tony

+0

Да спящий объект. –

+0

Я добавил некоторые подробности. Посмотрите Pls. – Tony

Смежные вопросы