2010-04-06 4 views
2

est ici le problème (désolé pour le mauvais anglais):« conflit de type de paramètre » lors de l'appel Java procédure stockée dans une autre Java procédure stockée

Je travaille avec JDeveloper et Oracle10g, et j'ai Java procédure stockée que appelle une autre JSP comme le code:

int sd = 0; 

try { 
    CallableStatement clstAddRel = conn.prepareCall(" {call FC_RJS_INCLUIR_RELACAO_PRODCAT(?,?)} "); 
    clstAddRel.registerOutParameter(1, Types.INTEGER); 
    clstAddRel.setString(1, Integer.toString(id_produto_interno)); 
    clstAddRel.setString(2, ac[i].toString()); 
    clstAddRel.execute(); 

    sd = clstAddRel.getInt(1); 
} catch(SQLException e) { 
    String sqlTeste3 = "insert into ateste values (SQ_ATESTE.nextval, ?)"; 

    PreparedStatement pstTeste3 = conn.prepareStatement(sqlTeste3); 
    pstTeste3.setString(1,"erro: "+e.getMessage()+ ac[i]); 
    pstTeste3.execute(); 
    pstTeste3.close(); 
} 

J'enregistre l'erreur dans une table appelée ATESTE parce que ce JavaSP est une procédure et non une fonction, je l'ai à manipuler DML à l'intérieur.

Ainsi, le message d'erreur que je reçois est: « conflit de type de paramètre » ...

la fonction « FC_RJS_INCLUIR_RELACAO_PRODCAT » il est un Java procédure stockée aussi, il est déjà exporté vers Oracle, et retourne une variable int , et je dois lire ceci pour décider quel webservice j'appellerai de ce JavaSP.

J'ai déjà essayé le OracleTyep.NUMBER dans le registerOutParameter.

Quelqu'un sait ce que je fais mal?

Répondre

1

Il semble qu'il vous manque un paramètre dans votre appel. Vous enregistrez un paramètre de sortie Integer, puis vous définissez 2 paramètres de chaîne. Je suppose que votre procédure FC_RJS_INCLUIR_RELACAO_PRODCAT renvoie une valeur entière. Dans ce cas votre code devrait ressembler à ceci:

CallableStatement clstAddRel = conn.prepareCall(" { ? = call FC_RJS_INCLUIR_RELACAO_PRODCAT(?,?)} "); 
clstAddRel.registerOutParameter(1, Types.INTEGER); 
clstAddRel.setString(2, Integer.toString(id_produto_interno)); 
clstAddRel.setString(3, ac[i].toString()); 
clstAddRel.execute(); 
+0

En fait, j'ai tapé ce mal, il a les 3 paramètres ... J'ai essayé beaucoup de choses, mais je résolu ce problème fonction de changement d'une procédure lors de l'exportation de Java à Oracle ... – GuiPereira

Questions connexes