【问题标题】:SimpleJdbc, Invalid Conversion RequestedSimpleJdbc,请求的转换无效
【发布时间】:2019-05-12 19:28:05
【问题描述】:

使用 Oracle 数据库 这是我的测试方法

public void testConnection(int a, int b) {
    this.jdbcTemplateObject = new JdbcTemplate(mysqlDataSource());
    SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplateObject).withCatalogName("packageName").withProcedureName("myProcedureName");

    SqlParameterSource in = new MapSqlParameterSource().addValue("arg1", a);
    SqlParameterSource in2 = new MapSqlParameterSource().addValue("arg2", b);
      Map<String, Object> out = jdbcCall.execute(in,in2);

下面是我的过程

PROCEDURE get_misc_shipment_type (a  IN  NUMBER,
                                  b  IN  NUMBER,
                                  c  OUT VARCHAR2,
                                  d  OUT VARCHAR2);  

我的数据源连接良好,我验证数据库正在连接,但它会抛出这个错误,

callableStatementCallback; uncategorized SQLException for SQL [{call XX_RATELINX_SHIPPING_ENGINE.GET_MISC_SHIPMENT_TYPE(?, ?, ?, ?)}]; SQL state [99999]; error code [17132]; Invalid conversion requested; nested exception is java.sql.SQLException: Invalid conversion requested

我没有明白我做错了什么,感谢任何帮助。

【问题讨论】:

  • 您必须再传递两个参数,它们可以处理程序的输出。 docs.oracle.com/cd/E17952_01/connector-j-en/…
  • 我通过在 = new MapSqlParameterSource().addValue("arg1", a).addValue("arg2",b); 中更改这个 SqlParameterSource 来解决它
  • @vivek 你有什么想法,如果输入参数传递应该在存储过程中完全匹配?

标签: java oracle stored-procedures jdbctemplate simplejdbccall


【解决方案1】:

我通过更改解决了这个问题:

SqlParameterSource in = new MapSqlParameterSource().addValue("arg1", a).addValue("arg2",b); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2014-03-01
    • 2013-07-30
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多