我有一个存储过程,它接受用户定义的数据类型。基本上,此数据类型是部门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();
请告诉我哪里出错了?