iBatis/Oracle : problème exécution procédure stockée
Bonjour,
Je souhaite exécuter une procédure stockée Oracle avec iBatis. J'ai bien trouvé la doc correspondante et des exemples sur le Web, mais impossible de le faire fonctionner.
Avec la variante 1 ci-dessous, j'ai le message d'erreur :
Code:
System.IndexOutOfRangeException: Un OracleParameter avec ParameterName '' n'est pas contenu dans ce OracleParameterCollection.
Avec la variante 2 , j'ai le message d'erreur :
Code:
System.IndexOutOfRangeException: The parameter 'pe_orjeton' does not exist in the stored procedure 'ProcChargerDroitsUtilisateur'. Check your parameterMap.
J'ai fait comme sur des exemples qui fonctionnent, mais impossible de faire marcher chez moi.
Une idée SVP ?
Merci.
Signature de la procédure stockée (qui se trouve dans un package) :
Code:
1 2 3 4 5 6 7 8 9 10
|
PROCEDURE PROC_CHARGE_DROITS(
pe_orjeton IN vwjeton.orjeton%TYPE, -- number(16)
pe_cdtuserw_sel IN vwuser.cdtuserw%TYPE, -- varchar2(4)
pe_cduserw_sel IN vwuser.cduserw%TYPE, -- varchar2(12)
pe_cdtuserw IN vwuser.cdtuserw%TYPE, -- varchar2(4)
pe_cduserw IN vwuser.cduserw%TYPE, -- varchar2(12)
ps_code_erreur OUT VARCHAR2,
ps_libelle_erreur OUT VARCHAR2
); |
Code C# :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Hashtable param = new Hashtable();
param.Add("pe_orjeton", p_IdSession);
param.Add("pe_cdtuserw_sel", p_TypeUser);
param.Add("pe_cduserw_sel", p_CodeUser);
param.Add("pe_cdtuserw", p_TypeUserConnecte);
param.Add("pe_cduserw", p_CodeUserConnecte);
param.Add("ps_code_erreur", null);
param.Add("ps_libelle_erreur", null);
Mapper.Instance().QueryForObject("ProcChargerDroitsUtilisateur", param); |
Fichier de mapping :
Code:
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
|
<statements>
<procedure id="ProcChargerDroitsUtilisateur" parameterMap="ProcChargerDroitsUtilisateur-params">
pack_charge_droits.proc_charge_droits
</procedure>
</statements>
<parameterMaps>
<parameterMap id="ProcChargerDroitsUtilisateur-params" class="HashTable">
===== Variante 1 =====
<parameter property="pe_orjeton" direction="Input" dbType="Int64" />
<parameter property="pe_cdtuserw_sel" direction="Input" dbType="VarChar2" />
<parameter property="pe_cduserw_sel" direction="Input" dbType="VarChar2" />
<parameter property="pe_cdtuserw" direction="Input" dbType="VarChar2" />
<parameter property="pe_cduserw" direction="Input" dbType="VarChar2" />
<parameter property="ps_code_erreur" direction="Output" dbType="VarChar2" />
<parameter property="ps_libelle_erreur" direction="Output" dbType="VarChar2" />
===== Variante 2 =====
<parameter property="pe_orjeton" column="pe_orjeton" />
<parameter property="pe_cdtuserw_sel" column="pe_cdtuserw_sel" />
<parameter property="pe_cduserw_sel" column="pe_cduserw_sel" />
<parameter property="pe_cdtuserw" column="pe_cdtuserw" />
<parameter property="pe_cduserw" column="pe_cduserw" />
<parameter property="ps_code_erreur" direction="Output" />
<parameter property="ps_libelle_erreur" direction="Output" />
</parameterMap>
</parameterMaps> |