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


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. [原创]C#应用WindowsApi实现查找(FindWindowEx)文本框(TextBox、TextEdit)。

    /// <summary> /// 获取文本框控件 /// </summary> /// <param name="hwnd">文本框所在父窗口 ...

  2. mydumper 快速高效备份mysql,按照表生成备份文件,快速恢复

    Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具.开发人员主要来自MySQL,Facebook,SkySQL公司.目前已经在一些线上使用了Mydumper. Mydum ...

  3. oracle 存储过程小总结

    1 创造存储过程 Create or procedure My_procedure( param1,param2) is Begin . . . End 2 判断语句 If x>0 then B ...

  4. bzoj3600: 没有人的算术

    题意:太难说了..手动去看吧反正不是权限题. 膜拜VFK大爷的神题! 其实一开始思路挺清楚的,如果我们能做到用一个实数去代表"数",这就是裸的动态区间最值查询. 关键是怎么用实数去 ...

  5. ASP.NET MVC 4 (三) 过滤器

    先来看看一个例子演示过滤器有什么用: public class AdminController : Controller { // ... instance variables and constru ...

  6. jQuery的基本用法:

    随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名 的有Prototype.YUI. jQuery.mootools.Bindows以及国内的JSVM框 ...

  7. google api autocomplete

    <input class="flex-item" id="autocomplete" placeholder="address, zip or ...

  8. windows10 声音图标总是被禁用,检测显示:扬声器,耳机或者耳机已拔出

    参考来源:http://jingyan.baidu.com/article/90bc8fc85de19df652640c7f.html 控制面板/应用和声音/Realtek高清晰音频管理器 点击右上角 ...

  9. Python学习07——字典(2)

    笨办法学Python第40节,上次用的第三版的书,这次是第四版的书. 这一节的代码如下: cities = {'CA':'San Francisco', 'MI':'Detroit', 'FL':'J ...

  10. MS SQL提示列名 'Y' 无效的原因及解决办法

    在作项目写MS SQL 存储过程时,需拼接SQL语句字符串,其中有单字符变量,如下图: 如上图执行存储过程是提示“列名‘Y’无效”.经反复测试,原因在用单字符变量连接SQL字符串是必须在引用变量前后各 ...