хранимой процедура (спецификация только):вызова хранимой процедура в спящих ошибках
CREATE OR REPLACE PACKAGE "PACK_USER"
as
type contact is table of nvarchar2(50) INDEX BY BINARY_INTEGER;
procedure create_user(
user_id out number,
pwd in nvarchar2,
birthday in date,
gender in number,
address in nvarchar2,
realName in nvarchar2,
identity in nvarchar2,
salary in float,
contractTime in date,
departmentId in number,
positionId in number
);
end pack_user;
/
Это нормально, когда я называю его от жабы. Но когда я вызываю его из спящего режима, он говорит «неверный оператор SQL», но никакой причины не отображается. спящего режима отображения:
<sql-query name="create_user" callable="true">
<return-scalar column="user_id" type="integer"/>
{ call PACK_USER.CREATE_USER(?,:pwd,:birthday,:gender,:address,:realName,:identity,:salary,:contractTime,:departmentId,:positionId)}
</sql-query>
называют:
Session session = this.getSession();
Query q = session.getNamedQuery("create_user");
q.setString("pwd", userInfo.getIndentity());
q.setDate("birthday", userInfo.getBirthday());
q.setInteger("gender", userInfo.isGender() ? 1 : 0);
q.setString("address", userInfo.getHomeAddress());
q.setString("realName", userInfo.getRealname());
q.setString("identity", userInfo.getIndentity());
q.setFloat("salary", userInfo.getBaseSalary());
q.setDate("contractTime", userInfo.getContractTime());
q.setInteger("departmentId", userInfo.getDepartmentId());
q.setInteger("positionId", userInfo.getPositionId());
int res = (Integer)q.uniqueResult();
return res;
PS: Так как это проект, конечно, оракул и хранимая процедура требуется во время спящего режима нет.
Я уже пытался переместить процедуру из пакета или создать функцию вместо процедуры. Ничего не работает.
оракул версия 10г
Вот ссылка: http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#sp_query. Для Oracle применяются следующие правила: * Функция должна возвращать набор результатов. Первым параметром процедуры должен быть OUT, который возвращает набор результатов. Это делается с использованием типа SYS_REFCURSOR в Oracle 9 или 10. В Oracle вам необходимо определить тип REF CURSOR. См. Литературу Oracle для получения дополнительной информации. –
My proc не возвращает таблицу, а целое число. Поэтому для конфигурации не требуется поле столбца. Это не может быть эта проблема. – gengchensh
Хорошо, я попытаюсь вернуть курсор – gengchensh