这是问题(抱歉英语不好):
我正在使用 JDeveloper 和 Oracle10g,并且我有一个 Java 存储过程,它像代码一样调用另一个 JSP:
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();
}
我在一个名为 ATESTE 的表中记录错误,因为这个 JavaSP 是一个过程而不是一个函数,我必须在里面操作 DML。
所以,我得到的错误信息是:'参数类型冲突'......
函数“FC_RJS_INCLUIR_RELACAO_PRODCAT”也是一个Java存储过程,它已经导出到Oracle,并返回一个int变量,我必须阅读这个来决定我将从这个JavaSP调用哪个webservice。
我已经在 registerOutParameter 中尝试过 OracleTyep.NUMBER。
有人知道我在做什么错吗?