Bonjour.

J'ai un problème pour appeler une procédure dans Hibernate (3.4) :
J'ai une procédure qui me permet de déplacer des données d'une table vers une autre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
PACKAGE BODY PACK_DEFICARD_VALID_COM AS
 
	PROCEDURE F_Validation(P_retourOK OUT BOOLEAN, P_NuCom IN COM.NU_COM%TYPE, P_NoGrp IN GRP.NO_GRP%TYPE, P_NuComTmp IN COM_TMP.NU_COM_TMP%TYPE)
    IS
 
	BEGIN
 
    P_retourOK := true;
 
		SELECT ID_ADR_SEQ.NEXTVAL INTO w_idAdr FROM DUAL;
		SELECT ID_ADR_TMP INTO w_idAdrTmp FROM COM_TMP WHERE NU_COM_TMP = P_NuComTmp AND NO_GRP = P_NoGrp;
 
		INSERT INTO ADR (ID_ADR, TP_ADR, NOM, NOM_COMPLEMENT, NOM_RUE, NOM_COMPLEMENTRUE, NOM_LIEUDIT, CD_POSTAL, NOM_VILLE, NOM_PAYS, BO_NPAI) 
		SELECT w_idAdr, TP_ADR, NOM, NOM_COMPLEMENT, NOM_RUE, NOM_COMPLEMENTRUE, NOM_LIEUDIT, CD_POSTAL, NOM_VILLE, NOM_PAYS, BO_NPAI
		FROM ADR_TMP WHERE ID_ADR_TMP = w_idAdrTmp;
 
		INSERT INTO COM (NU_COM, ID_ADR, NOM_COM, NOM_ENSEIGNE, NO_TELEPHONE, NO_FAX, NO_GRP, CD_NAF, HHMN_MINAPPEL) 
		SELECT P_NuCom, w_idAdr, NOM_COM, NOM_ENSEIGNE, NO_TELEPHONE, NO_FAX, NO_GRP, CD_NAF, HHMN_MINAPPEL
		FROM COM_TMP
		WHERE NU_COM_TMP = P_NuComTmp
		AND NO_GRP = P_NoGrp;		
 
 
 
		DELETE FROM COM_TMP
		WHERE NU_COM_TMP = P_NuComTmp
		AND NO_GRP = P_NoGrp;
 
		DELETE FROM ADR_TMP 
		WHERE ID_ADR_TMP = w_idAdrTmp;
 
    EXCEPTION
      WHEN OTHERS THEN
        P_retourOK := false;
 
 
	END;	
 
END;
Je voudrais que cette procédure me retourne un booleen (P_retourOK) pour me dire si tout c'est bien passé ou pas.
Je l'appel grace à hibernate

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
String sql = "CALL PACK_DEFICARD_VALID_COM.F_Validation( :retourOK,  :nuCom, :noGrp, :nuComTmp)";
        SQLQuery query = getSession().getHibernateSession().createSQLQuery(sql);
            query.setParameter(param.getName(), param.getValue(), param.getType());
 
        query.setParameter("retourOK", retourOK, PlSqlType.BOOLEAN));
        query.setParameter("nuCom", nu_com, PlSqlType.INTEGER));
        query.setParameter("noGrp", no_grp, PlSqlType.STRING));
        query.setParameter("nuComTmp", nu_com_tmp, PlSqlType.INTEGER));
        query.executeUpdate();
Si je retire le paramètre retourOK, il n'y a aucun problème, la procédure ce lance, par contre avec se paramètre j'ai une erreur:
ORA-06553: PLS-306: numéro ou types d'arguments erronés dans appel à 'F_VALIDATION'
org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query

j'ai vu qu'on pouvait mappé une procédures stockées grace à une requête nommée mais si j'ai bien compris on ne peut retourner qu'un curseur.

Quelqu'un serait-il a même de m'aider?

D'avance, merci