业务场景:能过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;