存储过程,使用二维数组参数【简单整理】

本文介绍了如何通过JAVA和JDBC高效地同步大量数据到数据库,利用存储过程批量处理,避免频繁交互。创建了一个二维数组类型的ORACLE Type,并在Package中定义了处理该类型的方法。在JAVA代码中,使用OracleCallableStatement和相关Oracle库来调用存储过程,传递二维数组参数,并处理返回值。
摘要由CSDN通过智能技术生成

业务场景:能过API获取某系统数据,将数据同步到别的数据库表格中。已存在的数据更新操作,不存在的新增。每天都要同步,且数据量较大。使用 JAVA + JDBC

分析:若单条数据进行处理,需循环、频繁的与数据库进行交互。故使用存储过程,按自定义打包数据,比如1000条 调用一次存储过程(下面创建type时会指定,java代码调用存储过程时1000/次)。

Table:

假设有表 tab1 ,字段 id 、name 、 num,类型varchar2(50)

sql:

 1.创建Type(如需在java中调用存储过程,type需独立定义,在package中定义的会提示错误、无法找到)

 --** 创建对象类型,属性名称自定义,属性个数与需同步的参数保持一致即可

   create or replace  type type_xx_obj as object 
  (
    id   varchar2(50),
    name   varchar2(50),

num varchar2(50)

  );

-- ** 创建type_xx_obj对象的二维数组,最大容量1000

   create or replace  type  type_xx_array as VARRAY(1000) of type_agilesyncdata_obj;

2. 新建package及body (procedure

  create or replace package pkg_agilesyncdata is
  procedure pro_syncdata(v_array_2din in type_xx_array,  v_out     out varchar2);
  end pkg_agilesyncdata;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值