Here is my working code:
public interface CandidatRepository extends JpaRepository<Candidat, String> {
@Procedure(procedureName = "garnuche.INSCRIPTION_TEST")
String inscrire(String nom);
}
CREATE OR REPLACE PROCEDURE GARNUCHE.INSCRIPTION_TEST (
NOM IN VARCHAR2,
STATUS OUT VARCHAR2) AS
BEGIN
INSERT INTO GARNUCHE.CANDIDAT_TEST (NOM) VALUES (NOM);
STATUS := '99';
END;
Now I would like to have 2 out parameters, so I try this:
@Procedure(procedureName = "garnuche.INSCRIPTION_TEST")
Map<String, ?> inscrire(String nom);
CREATE OR REPLACE PROCEDURE GARNUCHE.INSCRIPTION_TEST (
NOM IN VARCHAR2,
STATUS OUT VARCHAR2,
STATUS2 OUT VARCHAR2) AS
BEGIN
INSERT INTO GARNUCHE.CANDIDAT_TEST (NOM) VALUES (NOM);
STATUS := '99';
STATUS2 := '98';
END;
But I get this error:
org.hibernate.procedure.ParameterTypeException: Could not determine ProcedureCall parameter bind type - out (2)
Note: I would like to avoid declaring all my parameters with (the reason that the target procedure will have 200 parameters...):
@NamedStoredProcedureQuery(
name = "Candidat.inscrire",
procedureName = "garnuche.INSCRIPTION_TEST",
parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "NOM", type = String.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, name = "STATUS", type = String.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, name = "STATUS2", type = String.class)
}
or
query.registerStoredProcedureParameter("NOM", String.class, ParameterMode.IN);