我遇到了一個問題,我試圖使用Hibernate調用Oracle存儲過程,如下面的代碼片段所示。在休眠中調用存儲過程的錯誤
我的DAO類:
Query q = session.createSQLQuery(" {call PKG.PROC_GET_DATA_SET(?, :parameter1, :parameter2) }")
.setParameter(0, OracleTypes.CURSOR)
.setParameter("parameter1", "fDate")
.setParameter("parameter2", "tDate");
resultSet = q.list();
程序:
CREATE OR REPLACE PACKAGE BODY schema.PKG
AS
PROCEDURE PROC_GET_DATA_SET(
P_CURSOR OUT SYS_REFCURSOR,
P_STRING1 IN VARCHAR2,
P_STRING2 IN VARCHAR2
)
AS
BEGIN
OPEN P_CURSOR FOR
.
.
.
但當我致電PROC作爲DAO類中,我得到了如下錯誤。
錯誤:
PLS-00306: wrong number or types of arguments in call to 'PROC_GET_DATA_SET'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
掙扎被發現的原因。有人可以在這裏扔光嗎?
TIA,
'setParameter'這是爲IN,OUT或IN OUT參數?你爲什麼不說出所有參數? – ibre5041
僅適用於'OUT'參數,您應該使用'registerOutParameter'。 – ibre5041
'?'是爲ref遊標,這是我的OUT參數,其餘的都是與值給出的參數。 – Prince