[英]hibernate PLS-00306 error
I have a legacy procedure on db, and I cannot modify it. 我在db上有一个旧程序,我无法修改它。 It looks like this: 看起来像这样:
create or replace FUNCTION GETSESSION
( sUsername IN varchar) return varchar
IS
nSession number;
sRAWString RAW (32767);
sKey varchar(60);
sKey2 varchar(60);
BEGIN
select webservice.seq_mgmt.NEXTVAL, sys_guid() into nSession, sKey2 from dual;
sRAWString := UTL_RAW.CAST_TO_RAW (sKey2);
sKey:=LOWER(SYS.DBMS_CRYPTO.HASH (sRAWString, SYS.DBMS_CRYPTO.HASH_MD5));
update mgmt_session s set s.loggedout = sysdate where upper(s.userid) = upper(sUsername) and loggedout is null;
insert into mgmt_session a (userid, sessionid, token, loggedin)
(select upper(susername), nSession, sKey, sysdate from dual);
return sKey2;
END;
Along with this, I also has legacy code, that thankfully, I can and should modify to make it pretty. 除此之外,我还有旧代码,值得庆幸的是,我可以并且应该进行修改以使其美观。 So I want to change direct call to database procedure to hibernate call, but I ran into error PLS-00306
that claims I have wrong number or type of arguments. 因此,我想PLS-00306
数据库过程的直接调用更改为休眠调用,但是遇到了错误PLS-00306
,该错误声称我的参数数目或类型错误。
here is my call: 这是我的电话:
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("GETSESSION")
.registerStoredProcedureParameter(1, String.class, ParameterMode.IN)
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT)
.setParameter(1, username);
query.execute();
return (String) query.getOutputParameterValue(2);
I know what error message cays - I just can't understand what's wrong with my parameters setting :/ This procedure takes one string, and returns other string. 我知道错误消息的原因-我只是不明白我的参数设置有什么问题:/此过程采用一个字符串,并返回其他字符串。 Or am I wrong? 还是我错了?
输出参数为2。使用query.getOutputParameterValue(2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.