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" class="org.springframework.jdbc.support.nativejdbc.WebSphereNativeJdbcExtractor" />

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();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值