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 : 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
 
 
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 : 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
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

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