Erreur 06550 invalid number or types of parameter
Bonjour à tous
mon probleme est comme suite :
j'ai une fonction Java qui retourne un integer aprés l'appel d'une fonction Oracle qui a comme type de retour un varchar2 decrivant le deroulement de la fonction et 2 parametre un d'entrée et l'autre de sortie!!!
voici ma fonction Oracle :
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 32
|
function ps_s_typeacte(p_id_acte in integer ,p_type out integer)
return varchar2 is
result varchar2(10) := '0';
v_sqlcode integer;
v_sqlmess varchar2(500);
begin
select DISTiNCT id_type_acte_gestion into p_type
from t_workflow_statut
where id_workflow_statut like(select max(id_workflow_statut)
from t_workflow_statut_suivi where id_acte=p_id_acte);
dbms_output.put_line(p_type);
v_sqlcode := SQLCODE;
result := v_sqlcode;
return(result);
exception
when others then
v_sqlcode := SQLCODE;
v_sqlmess := SQLERRM;
dbms_output.put_line('Error ' || to_char(v_sqlcode) || ' Message ' ||
v_sqlmess);
result := v_sqlcode;
raise_application_error(-20999, v_sqlcode || ',' || v_sqlmess);
return(result);
end ps_s_typeacte; |
une methode java utilise le parametre de sortie p_type (il y a une seule occurence )
et le retourne en Integer
voici ma methode Java :
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| public Integer getTypeActe(Integer _idActe) throws TechnicalException, FunctionalException {
Integer id;
String result="";
IProcCaller caller = ProcCallerHelper.getProcCaller();
caller.reset();
caller.setFuncName(FUNC_GET_TYPE_ACTE);
caller.addParamOut(Types.VARCHAR);
caller.addParam(_idActe);
caller.addParamOut(Types.INTEGER);
try {
System.err.println("dans la ps");
//Exécution de la requette
ResultSet rs = caller.executeQuery();
System.err.println("apré la ps");
if (rs != null) {
while (rs.next()) {
id=rs.getInt(3);
}
}
result = caller.getString(1);
//Erreurs fonctionnelles
if (result != null) {
if (result.equals("0001")) {
throw new FunctionalException(CLASS_NAME, ResourceHelper.getMessage("error.oracle.0001"));
}
}
/* int id2 = caller.getInt(3);
id = new Integer(id2);*/
id=new Integer(10);
} catch (Exception e) {
logger.error(e.getMessage(), e);
if (e instanceof FunctionalException) {
throw new FunctionalException(CLASS_NAME, e.getMessage());
} else {
throw new TechnicalException(CLASS_NAME, e.getMessage());
}
}
return id;
} |
[/code]
ça donne une erreur comme quoi le nombre iu le type des parametres n'est pas valide .
j'ai une autre question :oops:
Comment convertir un entier en un Integer parque là ça donne une erreur :
et puis est ce que vous avez des remarques sur les indexe des colonne à getter dans la methode getInt ou getString ????
Merci bq pour votre aide ;)