此处给出例子,具体根据业务需求


create or replace procedure P_CART_Sheet1(p_id in NUMBER) is
--车辆管理功能
v_str varchar2(4000);
v_building_id number;
begin
--获取 building_id
select t.expandtype into v_str from t_excel_import_datasrc t where t.id = p_id;
v_building_id := to_number(v_str);

--跨库查询注意授权: eg:grant select on t_bas_datadict to estate ,否则编译不通过
-- 查找并更新单元名称不存在的数据 --单元名称与单元id关联关系
update t_excel_import_generation t
set t.errormsg = '单元名称不存在'
where t.businessid = p_id and t.businesstype = 'CART_Sheet1' and t.errormsg is null
and t.cell1 not in (
SELECT U.NAME UNIT_NAME
FROM BAS_CART T
RIGHT JOIN BAS_BUILDING_UNIT U ON T.UNIT_ID=U.UNIT_ID
WHERE 1 = 1
AND U.STATE = '1' AND U.BUILDING_ID = v_building_id
);
commit;
--将单元名称更新为单元id
update t_excel_import_generation t
set t.cell1 = (
select distinct k.unit_id from (
SELECT U.NAME UNIT_NAME,U.Unit_Id
FROM BAS_CART T
RIGHT JOIN BAS_BUILDING_UNIT U ON T.UNIT_ID=U.UNIT_ID
WHERE 1 = 1 AND U.STATE = '1' AND U.BUILDING_ID = v_building_id
) k where k.unit_name = t.cell1
)
where t.businessid = p_id and t.businesstype = 'CART_Sheet1' and t.errormsg is null;
commit;

MERGE INTO BAS_CART t
USING (
select to_number(Cell1) Cell1,Cell2,Cell3,Cell4,Cell5,Cell6,Cell7
from t_excel_import_generation t
where t.errormsg is null and t.businesstype = 'CART_Sheet1' and t.businessid = p_id
) k
ON (t.lic_plate_no = k.cell2 and t.unit_id = k.Cell1)
WHEN MATCHED THEN
UPDATE SET
t.model = k.Cell3,
t.color = k.Cell4,
t.parking_space = k.Cell5,
t.update_time = sysdate,
t.link_man = k.Cell6,
t.link_phone = k.Cell7
WHEN NOT MATCHED THEN
INSERT (ID,UNIT_ID,LIC_PLATE_NO,MODEL,COLOR,PARKING_SPACE,UPDATE_TIME,DEL_FLAG,LINK_MAN,LINK_PHONE)
VALUES(
SEQ_BAS_CART_ID.NEXTVAL,k.Cell1,k.cell2,k.Cell3,k.Cell4,k.Cell5,sysdate,1, k.Cell6,k.Cell7
);

Exception
when others then
dbms_output.put_line('----------插入表失败啦---------表id: '||p_id);
dbms_output.put_line('原始错误信息: 行号:'||dbms_utility.format_error_backtrace()||' '||sqlerrm);
PKG_EXCEL_UTILS.p_log(p_id,sqlerrm,dbms_utility.format_error_backtrace(),'ERROR',SQLCODE);
raise;
end P_CART_Sheet1;


oracle xmltype导入并解析Excel数据 (五)中间表数据入库的更多相关文章

  1. oracle xmltype导入并解析Excel数据--前言

    通常,很多的时候,我们需要导入Excel数据到系统中,但是Excel数据需要我们去各种校验,比如身份证校验,手机号码校验等等. 校验失败的数据,提供Excel导出错误原因,提示给用户. 如此,如果校验 ...

  2. oracle xmltype导入并解析Excel数据 (四)特别说明

    1.Excel导出,此处没有给出 2.错误原因在中间表,T_EXCEL_IMPORT_GENERATION,其中errormsg不为空的数据 3,中间表入库过程: 需要自己实现,为一个存储过程,存储过 ...

  3. oracle xmltype导入并解析Excel数据 (三)解析Excel数据

    包声明 create or replace package PKG_EXCEL_UTILS is -- Author: zkongbai-- Create at: 2016-07-06-- Actio ...

  4. oracle xmltype导入并解析Excel数据 (一)创建表与序

    表说明: T_EXCEL_IMPORT_DATASRC: Excel数据存储表,(使用了xmltype存储Excel数据) 部分字段说明: BUSINESSTYPE: Excel模板类型,一个Exce ...

  5. oracle xmltype导入并解析Excel数据 (二)规则说明

    规则表字段说明如下: 其中RULE_FUNC_CUSTOMIZE表示,用户自己写函数,去判断数据是否合法,存储的是函数的名字 此函数的参数只有一个,该列的值,字段类型是Varchar2, 校验失败的话 ...

  6. 在论坛中出现的比较难的sql问题:9(触发器专题 插入数据自动更新表数据)

    原文:在论坛中出现的比较难的sql问题:9(触发器专题 插入数据自动更新表数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所 ...

  7. MySQL学习总结(五)表数据查询

    查询数据记录,是指从数据库对象表中获取所要查询的数据记录,该操作可以说是数据最基本的操作之一,也是使用频率最高.最重要的数据操作. 1.单表数据记录查询 1.1.简单数据查询 SELECT field ...

  8. mysql复制表数据,多表数据复制到一张表

    对于mysql 复制表数据可以使用 insert into select 方式 示例: $sql="insert into icarzoo.provider(providerId,provi ...

  9. 利用 js-xlsx 实现 Excel 文件导入并解析Excel数据成json格式的数据并且获取其中某列数据

    演示效果参考如下:XML转JSON 另一个搭配SQL实现:http://sheetjs.com/sexql/index.html 详细介绍: 1.首先需要导入js <script src=&qu ...

随机推荐

  1. 基本类型和引用类型调用是的区别(Object.create)

    var person = { name : 'jim', address:{ province:'浙', city:'A' } } var newPerson = Object.create(pers ...

  2. 由于客户端检测到一个协议错误 代码0x1104

    重新连接N次都还是这个错误提示,最后再重起电脑,还是没用.研究了一下错误终于解决了. 首先检查远程连接端口对不对?Windows远程默认的连接端口是3389,一般大家连接时直接输入IP或域名就可以连接 ...

  3. webservice服务的简单应用

    本人目前刚接触到webservice服务,知道它是一个为外部提供接口的服务,下面大概讲一下webservice是如何应用的. 在此我只针对ASP.NET 讲一个是如何应用的: 1. 打开VS ,在WE ...

  4. Fragment:关于Avoid non-default constructors in fragments的错误

    在android开发中,写了一个关于继承Fragment的类时,如果有重载构造函数时,会提示“Avoid non-default constructors in fragments: use a de ...

  5. 为什么.Net要求序列化的类必须有一个无参数的构造函数

    刚才用xml序列化器,序列化一个类,结果报错说序列化的类必须带有一个无参的构造函数,好奇怪啊.为什么要有这么苛刻的条件,而且xml序列化还要求序列化的成员是public. 我以前一直觉得序列化器是一个 ...

  6. discuz后台登陆 口令卡添加

    1.通过根目录文件admin.php 找到 $admincp->init(); 2.指向  dz/source/class/discuz/discuz_admincp.php 这个方法funct ...

  7. Java 和 Google Chrome 浏览器

    来源:https://java.com/zh_CN/download/faq/chrome.xml 本文适用于: 浏览器: Chrome Java 版本: 7.0, 8.0 Chrome 不再支持 N ...

  8. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  9. codevs 钢丝塔的庆生

    #include <cstdio> #include <cmath> const int MOD = 9999991; int table[MOD + 1]; void cre ...

  10. Codeforces Round #313 (Div. 1)

    官方英文题解:http://codeforces.com/blog/entry/19237 Problem A: 题目大意: 给出内角和均为120°的六边形的六条边长(均为正整数),求最多能划分成多少 ...