2014-12-08 2 views
0

я не могу извлекать данные из процедуры в Oracle с помощью JPA @StoredProcedureQuery ни @StoredNamedProcedureQueryПолучить курсор в оракула JPA()

PL/SQL

create or replace procedure p_get_plazas_activas(
p_c_resultado out pkg_zas_response.t_response 
) 
IS 

BEGIN 

    IF p_c_resultado%ISOPEN THEN 
     CLOSE p_c_resultado; 
     END IF; 
    OPEN p_c_resultado FOR 

     select distinct pl.PLZ_S_ID_PLAZA, pl.PLZ_S_PLAZA 
     from escaneo.pre_plazas pl, escaneo.pre_cos c 
     where pl.PLZ_S_ID_PLAZA = c.COS_S_ID_PLAZA 
     and pl.PLZ_S_PROVEEDOR is null 
     and pl.PLZ_N_STATUS = 1 
     and c.COS_N_ACTIVO = 1; 

end p_get_plazas_activas; 

тогда в Java

StoredProcedureQuery spq = em.createStoredProcedureQuery("p_get_plazas_activas"); 
List results = spq.getResultList(); 

i получить следующую ошибку

Internal Exception: java.sql.SQLException: ORA-06550: linea 1, columna 7: 
PLS-00306: wrong number or types of arguments in call to 'P_GET_PLAZAS_ACTIVAS' 
ORA-06550: linea 1, columna 7: 
PL/SQL: Statement ignored 
Error Code: 6550 
Call: BEGIN escaneo.p_get_plazas_activas(?); END; 
    bind => [1 parameter bound] 
Query: ResultSetMappingQuery() 

Также я пробовал с

spq.registeterStoredProcedureparameter(1, void.class, ParameterMode.INOUT) 

Некоторые советы ??

ответ

0

Вы не регистрировали выходной параметр:

spq.registerStoredProcedureParameter(1, Integer.class, ParameterMode.OUT) 
//          ^^^^^^^^^^^^^ 
//        or whatever type is relevant here 

Вы восстанавливаете к выходу позже с помощью:

int count = (Integer)spq.getOutputParameterValue(1); 
//^   ^^^^^^^ 
// or whatever type is relevant to you 
Смежные вопросы