java调用oracle中输入参数是数组类型的函数或者存储过程

本文记录了如何在Java中调用Oracle数据库的函数,该函数接收一个数组作为输入参数,并返回一个数组。详细介绍了Oracle端的数组类型声明以及Java端如何创建对应的ORM类,实现ORAData接口进行参数设置和结果转换。
摘要由CSDN通过智能技术生成

这次遇到一个开发需求,提供一个接口,输入参数是数组类型,要通过oracle封装的函数进行调用,返回结果也是一个数组。

记录一下对这种类型的实现方法,备忘。实际名称中用xxx替换了部分值,参考用

oracle端:

FUNCTION    xxx_func(i_a_array   IN cux_b2b_xxx_type, --数组类型参数
                                         i_b        IN VARCHAR2  --其他普通类型参数
                                ) RETURN cux_b2b_xxx_res_type --返回类型

.........

cux_b2b_xxx_type 就是一个数组类型的声明

CREATE OR REPLACE TYPE cux_b2b_xxx_type AS TABLE OF cux_b2b_xxx_rec

cux_b2b_xxx_type 是数组的声明

cux_b2b_xxx_rec是数组具体内容的声明

CREATE OR REPLACE TYPE cux_b2b_xxx_rec AS OBJECT(attribute1 VARCHAR2(240))

as Object 后面就是数组中具体列的说明

cux_b2b_xxx_res_type是返回类型的声明

CREATE OR REPLACE TYPE cux_b2b_xxx_res_type AS TABLE OF cux_b2b_xxx_res_rec

cux_b2b_xxx_res_rec是返回数组中具体列的声明

CREATE OR REPLACE TYPE cux_b2b_xxx_res_rec AS OBJECT
(
  xxx1         VARCHAR2(240), 
  xxx2 VARCHAR2(240), 
  xxx3        NUMBER, 
  xxx4    NUMBER, 
  xxx5          VARCHAR2(4000) 
)

java 部分:

首先,对输入数组的具体类型定义一个类

import java.sql.Connection;
import java.sql.SQLException;

import oracle.jdbc.OracleTypes;
import oracle.jpub.runtime.MutableStruct;
import oracle.sql.Datum;
import oracle.sql.ORAData;
import oracle.sql.ORADataFactory;

public class CuxB2bXxxRecBean implements ORAData {


public static final String _ORACLE_TYPE_NAME = "cux_b2b_xxx_rec".toUpperCase();  //一定是大写,这里的类型是数组中具体列对象的类型


protected MutableStruct _struct;

static int[] _sqlType = { OracleTypes.VARCHAR };//对应输入参数中的具体类型,如果有多列,这里就需要相应的参数个数,位置与列声明的一致,类型也有一致


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值