需要帮助从Spring应用程序调用存储过程

时间:2015-04-10 05:50:11

标签: spring oracle stored-procedures

我有一个存储过程,它接受用户定义的数据类型。基本上,此数据类型是部门ID列表,需要在某些业务验证后插入到数据库中。

包裹声明是:

PACKAGE BODY Data_Upload_Pkg
IS
PROCEDURE SP_EXCL_DEPT_UPLOAD(
    Ad_From_Dttm VARCHAR2,
    Department_List P_Excl_Dept_Array,
    V_Messg OUT VARCHAR2)

我试图在尝试调用存储过程时尝试使用STRUCT。但是在实例化STRUCT实例变量时,会调用存储过程,并且因为传递了错误数量的参数而导致异常。

我的代码如下:

SimpleJdbcCall procUploadDept = new SimpleJdbcCall(getDataSource())
                    .withCatalogName("DATA_UPLOAD_PKG").withProcedureName(
                            "SP_EXCL_DEPT_UPLOAD");

            MapSqlParameterSource temp = new MapSqlParameterSource();
            temp.addValue("AD_FROM_DTTM", "");
            Object[] deptObjArray = new Object[2];
            deptObjArray[0] = 800;
            deptObjArray[1] = 900;
            StructDescriptor deptStructDesc;

            WebSphereNativeJdbcExtractor var = new WebSphereNativeJdbcExtractor();
            oracle.jdbc.OracleConnection con = (oracle.jdbc.OracleConnection) var
                    .getNativeConnection(getConnection());
            deptStructDesc = StructDescriptor.createDescriptor(
                    "P_EXCL_DEPT_ARRAY", con);
            // deptStructDesc.
            STRUCT empStruct = new STRUCT(deptStructDesc, con, deptObjArray);
            temp.addValue("DEPARTMENT_LIST", empStruct);

            // SqlParameterSource in = temp;
            Map out = procUploadDept.execute(temp);
            String message = out.get("V_MESSG").toString();

请告诉我哪里出错了?

0 个答案:

没有答案