хранимая процедура (только спецификация):
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: Поскольку это проект курса, оракул и хранимая процедура требуются, а спящий режим - нет.
Я уже пытался переместить процедуру из пакета или создать функцию вместо процедуры. Ни то, ни другое не работает.
оракул версия 10g