declaredParameters与addDeclaredParameter SimpleJdbcCall

时间:2018-01-30 02:52:39

标签: java spring-jdbc

所以我使用Oracle数据库和函数而不是存储过程。我认为这并不是什么大不了的事情,就像我以前为存储过程创建的所有DAO一样。这没用。差异如下所示。

这里的功能设置工作正常:

public void setDataSource(DataSource dataSource) {
    this.findClassYear = new SimpleJdbcCall(dataSource)
                            .withSchemaName("CONNMAN")
                            .withFunctionName("F_CC_GET_STUCLASS")
                            .declareParameters(
                                    new SqlOutParameter("p_classout", Types.VARCHAR),
                                    new SqlParameter("p_pidm", Types.NUMERIC)
                            )
                            .withoutProcedureColumnMetaDataAccess();

    this.findClassYear.setAccessCallParameterMetaData(false);
    this.findClassYear.setFunction(true);
}

与设置相比 - 类似于我将用于存储过程的设置 - 不起作用:

public void setDataSource(DataSource dataSource) {
    this.findClassYear = new SimpleJdbcCall(dataSource)
                            .withSchemaName("CONNMAN")
                            .withFunctionName("F_CC_GET_STUCLASS");

    this.findClassYear.setAccessCallParameterMetaData(false);
    this.findClassYear.setFunction(true);

    //in parameters
    this.findClassYear.addDeclaredParameter(new SqlParameter("p_pidm", Types.NUMERIC));

    //out parameters
    this.findClassYear.addDeclaredParameter(new SqlOutParameter("p_classout", Types.VARCHAR));
}

两者都可以在JUnit测试中正常执行,但只有第一个产生实际结果。为什么我不能为函数使用动态声明的参数和/或是唯一负责此更改的东西?如果有什么我还缺少什么?

0 个答案:

没有答案