ibatis调用存储过程入参问题
CREATE OR REPLACE TYPE EMP_SALARY_REC AS OBJECT (
EMP_ID NUMBER(5),
EMP_NAME VARCHAR2(255),
START_DATE DATE,
SALARY NUMBER
);
/
CREATE OR REPLACE Type EMP_SALARY_TAB AS TABLE OF EMP_SALARY_REC;
/
next we will create a small package with one single test procedure
CREATE OR REPLACE PACKAGE EMP_SALARY_PKG IS
PROCEDURE GET_EMP_SALARIES(i_array IN EMP_SALARY_TAB,o_array OUT
EMP_SALARY_TAB);
End EMP_SALARY_PKG;
/
<!-- 本地连接抽取器 --><bean id="nativeJdbcExtractor" />Java代码://获取连接,如果在事物内,获取事物连接,否则获取新连接,连接实现与web容器有关Connection conn = DataSourceUtils.getConnection(dataSource);//conn = nativeJdbcExtractor.getNativeConnection(conn);was下需要转换,was下的连接与oracle连接都有各自的实现//描述构建自定义类型StructDescriptor sd = new StructDescriptor(type, (OracleConnection)conn); // type,自定义类型名称STRUCT[] struct = new STRUCT[size];for (int i=0;i<size;i++){ //填充数据struct[i]=new STRUCT(sd,conn,Object[]);//Object[]此处的数组对应自定义类型字段定义顺序,为字段值集合}//描述构建自定义数组类型ArrayDescriptor ad = ArrayDescriptor.createDescriptor(typeArray, conn);// typeArray ,自定义集合名称//填充数据ARRAY array = new ARRAY(ad, conn, struct);OracleCallableStatement callStatement = (OracleCallableStatement)conn.prepareCall("{call package.procedure(?)}");callStatement.setARRAY(1, array);//自定义集合类类型// callStatement.setSTRUCT(arg0, arg1)类型参数//执行r = callStatement.executeUpdate();
?