JAVA解析存储过程获取的对象_java调用输入、输出参数为对象的存储过程

本文介绍如何使用Java调用Oracle存储过程,包括连接数据库、创建参数对象、执行存储过程及处理返回结果的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//得到connection

OracleDataSource ods = new OracleDataSource();

ods.setURL("jdbc:oracle:thin:apps/apps@10.70.42.106:11501:zjprd");

Connection conn = ods.getConnection();

//此处PER_ABSENCE_ATTENDANCES_OBJ为存储过程定义的输入参数对象

StructDescriptor sd = StructDescriptor.createDescriptor("PER_ABSENCE_ATTENDANCES_OBJ", conn);

//此处的obj为根据要出入的oracle参数对象,实例化的一个java对象数组  如:Object[] obj = new Object[]{new Timestamp(),"hahaha",new Integer(1)}

STRUCT perAbsenceAttendancesObj = new STRUCT(sd, conn, obj);

//这里代码的作用是把“解释”完的java对象进一步解释为“oracle数组对象”

ArrayDescriptor ad = ArrayDescriptor.createDescriptor("PER_ABSENCE_ATTENDANCES_TAB", conn);

ARRAY perAbsenceAttendancesTab = new ARRAY(ad, conn, new STRUCT[] {perAbsenceAttendancesObj});

//调用存储过程

CallableStatement cs = conn.prepareCall("{ call erp_hr_absence_attendances.emp_absence_attendances(?,?,?,?,?,?,?,?,?,?,?,?,?) }");

//根据存储过程的输入参数依次传入输入参数

cs.setString(1, "LEI");

cs.setString(2, "ERP_LE_I_00001");

cs.setString(3, "1");

cs.setLong(4, Math.round(Math.random()*100000)); //正整数,由外围系统提供唯一值流水号

cs.setString(5, requestTime); //当前时间

cs.setString(6, "ERP内部调用");

cs.setLong(7, 8455l);

cs.setLong(8, 23991l);

cs.setArray(9, perAbsenceAttendancesTab);

//注册输出参数

cs.registerOutParameter(10,OracleTypes.INTEGER);

cs.registerOutParameter(11,OracleTypes.VARCHAR);

cs.registerOutParameter(12,OracleTypes.INTEGER);

cs.registerOutParameter(13,OracleTypes.ARRAY,"ERP_INTERFACE_LOG_TAB");//这里需要注意ERP_INTERFACE_LOG_TAB为存储过程返回的数组对象

cs.execute();

conn.close();

//特别注意,就算你不需要对象返回值和一般的返回值(哈哈,就是返回值啦),只要存储过程有返回值就必须注册,返回的对象存储过程参数必须带名字注册

不需要返回值 cs.execute();

需要返回值 ResultSet rs = cs.executeQuery(); 循环rs得到返回结果,用rs.getString() rs.getArray()等方法获取返回值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值