У меня есть хранимая процедура в Oracle:
procedure Test(results OUT gencursor, id in number) is
v_cursor gencursor;
begin
OPEN v_cursor FOR
select id, name, age from tblcustomers s where s.id = id;
results:=v_cursor;
end Test;
Теперь я хотел бы выполнить эту процедуру, используя nHibernate ISession.CreateSQLQuery
. Все примеры, которые я видел до сих пор, используют ISession.GetNamedQuery()
.
Итак, я хотел бы сделать что-то вроде (ToDataTable
- это мой собственный метод расширения на IQuery
, у меня есть больше методов расширения, которые я бы хотел использовать в сочетании с хранимыми процедурами):
var result = session
.CreateSQLQuery("call MyPackage.Test(:id)")
.SetDecimal("id", 33)
.ToDataTable();
Приведенный выше код выдает следующее исключение:
"не удалось выполнить запрос [вызов
MyPackage.Test (?)] Имя: id - Значение: 33
[SQL: call MyPackage.Test (?)] "
Я также пробовал:
var result = session
.CreateSQLQuery("call MyPackage.Test(:result, :id)")
.SetDecimal("id", 33)
.ToDataTable();
Тот бросает исключение:
Не все названные параметры были
set: [result] [call MyPackage.Test (: result,
: Идентификатор)]