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


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. 为 iTween 指定特定的回调 : onupdate, oncomplete

    问题地址:Specifying a delegate for the value of onupdate in iTween 1.找到 void CallBack 2.修改以下代码: void Cal ...

  2. 【Delphi7】 解决“程序第一次可以正常编译,但再次编译的时候会报错,必须重新打开Delphi”的问题

    报错如下: Access violation at address 00495044 in module 'coreide70.bpl'. Read of address...Access viola ...

  3. vi编辑器 使用 命令

    vi编辑器 1)命令模式 打开文件后.默认处于命令模式,命令模式无法编辑文件 2)输入模式 在命令模式下 按 i 进入输入模式,便于编辑文件内容 3)末行模式 编辑内容后,按esc进入到命令模式,再按 ...

  4. C语言 多线程测试

    1.CreateThread 在主线程的基础上创建一个新线程 2.WaitForMultipleObjects 主线程等待子线程 3.CloseHandle 关闭线程 // testThread.cp ...

  5. AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案

    AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案 以下代码为asp.net环境下,c#语言编写的解决方案.数据用Dictiona ...

  6. 在APACHE服务器上的访问方式上去除index.php

      在APACHE服务器上的访问方式上去除index.php   下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index ...

  7. .Net消息队列的使用

    版权声明:作者:真爱无限 出处:http://blog.csdn.net/pukuimin1226 本文为博主原创文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 ...

  8. LeetCode 5 Longest Palindromic Substring manacher算法,最长回文子序列,string.substr(start,len) 难度:2

    https://leetcode.com/problems/longest-palindromic-substring/ manacher算法相关:http://blog.csdn.net/ywhor ...

  9. WCF传输图片解决方案

    图片无法序列化后传输,但我们可以将图片转二进制字符串传输.然后在服务端将二进制字符串转图片. 将图片转字符串的例子: private byte[] BmpToJpegBuff(Image img) { ...

  10. Ubuntu日常问题搜集和解决办法

    搜集了日常工作中linuxmint的使用的命令备份和遇到的问题以及解决办法.(持续更新中) 保持ssh链接超时不自动断开 用ssh链接服务端,一段时间不操作或屏幕没输出(比如复制文件)的时候,会自动断 ...