oracle通过存储过程上传list保存功能
一、创建oracle 需要保存的数据类型type和存储过程produce
create TYPE "AL01TYPE" as object
(
-- 描述 : 档案批量转出
-- 作者 : dt
-- 时间 : 2021-05-10
-- 版本 :dev-1.0.1
aac003 NVARCHAR2(100),
aac002 NVARCHAR2(50),
aat001 NVARCHAR2(50),
aat002 NVARCHAR2(50),
aat013 NVARCHAR2(20),
aae011 NVARCHAR2(20),
aae036 NVARCHAR2(20),
aah002 NVARCHAR2(100)
);
create type AL01TYPELIST as table of AL01TYPE;
-- auto-generated definition
create PROCEDURE SP_HFSZHDA_DOUPLOADAL01(LIST IN AL01TYPELIST,
po_message OUT VARCHAR) IS
--描述:档案转出excel上传
--作者:dt
--时间:2021-05-10
--版本:dev-1.0.1
v_object AL01TYPE;
le_error EXCEPTION;
P_renum number(20);
v_aah002 VARCHAR(100);
ls_count number;
ls_aaf025 VARCHAR(50);
BEGIN
P_renum := 0; --初始化
FOR I IN 1 .. LIST.count LOOP
P_renum := 1 + P_renum;
v_object := LIST(I);
select replace(utl_raw.cast_to_varchar2(utl_raw.cast_to_raw(v_object.aah002)),unistr(' 000')) into v_aah002 from dual;
begin
Select count(0) into ls_count from az03 where aat001 = v_object.aat001 AND aat012 = '1';
if ls_count=0 then
po_message := '号:'||v_object.aat001||' 状态异常请核对后再上传!';
RAISE le_error;
end if;
Select count(0) into ls_count From AL01 where aaj022='1' and aat001=v_object.aat001 and aah002=v_aah002;
if ls_count =0 then
-- 开始插入信息
select SQ_AAF025.nextval into ls_aaf025 from dual;
insert into AL01(
aaf025,
aat012,
aat001,
aac003,
aac002,
aat002,
aat013,
aaj022,
aaj026,
aae011,
aae036,
aah002)values(
ls_aaf025,
'1',
v_object.aat001,
v_object.aac003 ,
v_object.aac002 ,
v_object.aat002 ,
v_object.aat013,
'1',
'excel上传数据',
v_object.aae011,
v_object.aae036,
v_aah002
);
end if;
IF P_renum >1000 THEN
commit;
P_renum:=0;
END IF;
po_message :='ok';
EXCEPTION
WHEN le_error THEN
NULL;
WHEN OTHERS THEN
ROLLBACK;
po_message := '上传失败' || SQLCODE || SQLERRM;
end;
END LOOP;
COMMIT;
END SP_HFSZHDA_DOUPLOADAL01;
二、通过过程上传list
package com.cominfo.elecfile.utils;
import oracle.jdbc.OracleConnection;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;
import org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor;
import java.sql.Connection;
import java.util.List;
/**
* 描述
*
* @Auther: dt
* @Date: 2021/5/10 0027 09:00
*/
public class OracleUtil {
/**
* 根据数据库中你的type将List组装成Array
* @param con
* @param OracleObj
* @param Oraclelist
* @param objlist
* @return
* @throws Exception
*/
public static ARRAY getArray(Connection con, String OracleObj, String Oraclelist, List
List
到此这篇关于oracle通过存储过程上传list保存功能的文章就介绍到这了,更多相关oracle保存list内容请搜索潘少俊衡以前的文章或继续浏览下面的相关文章希望大家以后多多支持潘少俊衡!
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:/shujuku/oracle/97392.html
