小编ND-*_*D-G的帖子

spring jdbc:simplejdbcall在使用同义词执行存储过程时不读取参数的元数据

我试图使用simpleJDBCCall.excute(in)方法执行存储过程,但是在使用过程的同义词的情况下它不会读取元数据.

这是代码.

SimpleJdbcCall optOutCall = new SimpleJdbcCall(dataSource)
        .withSchemaName("USER_SCH")
        .withCatalogName("USER")
        .withProcedureName(ADD_ADDRESS) 
        .declareParameters(
                new SqlOutParameter("returnCode", Types.NUMERIC),
                new SqlParameter("product_id", Types.NUMERIC),
                new SqlParameter("user_id", Types.NUMERIC),
                new SqlParameter("email_address", Types.VARCHAR));
    long returnCode = 0;
    inputs.addValue("returnCode", returnCode);
    inputs.addValue("product_id", 1);
    inputs.addValue("user_id", 45673);
    inputs.addValue("email_address", "a.b@abc.com");

    optOutCall.execute(inputs);
Run Code Online (Sandbox Code Playgroud)

这里" ADD_ADDRESS "过程存在于名为" USER_DATA " 的模式中的" USER "包下.我在另一个名为" USER_SCH "的模式中为同一个包/过程创建了一个同义词.当我使用simpleJDBCCall.execute()方法执行代码时,它不读取元数据并抛出以下execption.

    Caused by: java.sql.SQLException: ORA-06550: line 1, column 7:PLS-00306: wrong number or types of arguments in call to 'ADD_ADDRESS'ORA-06550: line 1, column 7:PL/SQL: Statement ignored
Run Code Online (Sandbox Code Playgroud)

这是日志消息.

[07 Oct 2014 10:32:49,019] [DEBUG] [org.springframework.jdbc.core.simple.SimpleJdbcCall]: [JdbcCall call not …
Run Code Online (Sandbox Code Playgroud)

oracle spring jdbc

3
推荐指数
2
解决办法
2310
查看次数

标签 统计

jdbc ×1

oracle ×1

spring ×1