![](/img/trans.png)
[英]Why am I getting PLS-00306 “wrong number or types of arguments in call” when the Hibernate looks correct?
[英]hibernate PLS-00306 error
我在db上有一個舊程序,我無法修改它。 看起來像這樣:
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;
除此之外,我還有舊代碼,值得慶幸的是,我可以並且應該進行修改以使其美觀。 因此,我想PLS-00306
數據庫過程的直接調用更改為休眠調用,但是遇到了錯誤PLS-00306
,該錯誤聲稱我的參數數目或類型錯誤。
這是我的電話:
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);
我知道錯誤消息的原因-我只是不明白我的參數設置有什么問題:/此過程采用一個字符串,並返回其他字符串。 還是我錯了?
輸出參數為2。使用query.getOutputParameterValue(2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.