现有A表和B表,有bill_id,detail_data两个字段,其中bill_id为数字型,是用户手机号码;detail_data是个字符串总长度为4000,每16位是一组,每组由两部分组成,费用代码(7位)和费用(9位)(注:位数包括空格),多个组拼成该字段的内容。现要将A表中的bill_id和B表的bill_id相等的记录,将其detail_data合入B表中的detail_data,原则是费用代码相同的,将费用相加,A表中有但B表中没有的费用代码,将费用代码和费用追加到B表的detail_data中。
写出存储过程。
create or replace procedure test_sp_afa
is
ls_detail_data varchar2(4000);
cursor c1 is select a.bill_id from a, b where a.bill_id=b.bill_id;
begin
for iii in c1 loop
--拆分b表,写入test_b(这个过度表很恶心)
insert into test_b
select substr(detail_data,rownum*16-15,7) daima0,substr(detail_data,rownum*16-15,9) feiy00
from b
start with bill_id=iii.bill_id
connect by bill_id=iii.bill_id and rownum<=ceil(length(trim(detail_data))/16);
--拆分a表,和test_b连接.
merge into test_b bb
using (
select substr(detail_data,rownum*16-15,7) daima0,substr(detail_data,rownum*16-15,9) feiy00
from a
start with bill_id=iii.bill_id
connect by bill_id=iii.bill_id and rownum<=ceil(length(trim(detail_data))/16)
) aa
on (aa.daima0=bb.daima0)
when matched then
update set bb.feiy00+aa.feiy00
when not matched then
insert values (aa.daima0,aa.feiy00);
--取连接后的detail_data 值
select max(detail_data) into ls_detail_data
from
(
select replace(sys_connect_by_path(rpad(daima0,7,' ')||rpad(feiy00,9,' '),','),',') detail_data
from
(select a.*,rownum rn
from test_b a )
start with rn=1
connect by rn=prior rn+1
);
--修改b表对应记录
update b
set detail_data =ls_detail_data
where bill_id=iii.bill_id;
--删除test_b内容
truncate table test_b;
end loop;
--exception
end;
分享到:
相关推荐
在Java编程语言中,访问修饰符是用于定义类、接口、方法、...了解以上知识点对解答亚信公司的Java工程师面试题至关重要,同时也是Java程序员日常开发的基础。熟练掌握这些概念将有助于提升代码质量和解决问题的能力。
Java 和 J2EE 相关知识点总结 本文总结了 Java 和 J2EE 相关的知识点,以便更好地理解和掌握 Java 和 J2EE 相关技术。涵盖了 interface 和 abstract 的区别、HashMap 和 Hashtable 的区别、线程常用的方法、GC 的两...
亚信面试题
### Java 亚信上海 面试题解析 #### 笔试题知识点详解 ##### 1. 选择题(未提供具体题目) 由于题目未给出具体内容,这里我们无法对选择题进行详细解析。 --- ##### 2. 简答题 **抽象类与接口的区别:** - **...
根据给定的文件标题、描述、标签以及部分内容,我们可以从中提炼出以下IT领域的知识点: ### 1. C/C++中的`sizeof`运算符 在C/C++编程中,`sizeof`是一个运算符,用于确定其操作数(可以是数据类型或变量)的大小...
【亚信科技面试原题数据库】涉及的知识点主要围绕Oracle数据库系统编程展开,包括SQL语句的使用、数据类型转换、事务处理、表的操作以及权限管理。以下是对这些知识点的详细解释: 1. SQL语句的正确性: - `select...
还让写了两个函数,分别是动态实现二维数组,以及如何释放二维数组,记得当时在大学的时候,好多课的上机也用过,不过记得不太清了,这些年都忘的差不多了,不过还好,面试官没说什么,就是说了释放有些问题,估计...
### 郑州亚信测试岗位面试经验解析 #### 公司了解与看法 1. **公司背景**:首先,面试官希望候选人能够对公司有一定的了解,包括但不限于公司的主营业务、文化价值观、行业地位等方面。这表明求职者对于所申请的...
本资源"达内内部各软件公司面试题"聚焦于亚信、文思、软通等知名软件公司的面试题目,旨在为准备应聘的Java工程师提供宝贵的复习资料。 首先,我们要理解Java面试的核心内容通常会涵盖以下几个方面: 1. **Java...
### Java现场面试题详解:亚信SSH\Oracle面试题 #### Struts1.0的运行机制与架构原理 Struts框架作为MVC(Model-View-Controller)设计模式的经典实现之一,极大地方便了Java Web应用的开发。在传统的JSP-Servlet-...
亚信面试笔试纸质试题扫描件,PDF文档。内容包括智力题、基础题。
亚信公司作为中国知名的电信软件和服务提供商,其在招聘过程中对技术人才的考核严谨而全面。2020年测试工程师实习生的笔试题涵盖了多个重要领域,旨在考察候选人的测试理论基础、数据库知识、Linux与Shell操作以及...
Java 面试题目 以下是根据给定的文件信息生成的相关知识点: 1. Vector 和 ArrayList 的区别 * Vector 的方法都是同步的(Synchronized),是线程安全的(thread-safe),而 ArrayList 的方法不是。 * Vector 和 ...
测试面试题 测试工程师面试题目是互联网公司面试的重要组成部分。以下是测试面试题的知识点总结: 基本测试流程 测试流程是测试工程师的基础知识。基本测试流程包括需求分析、测试计划制定、测试用例设计、用例...
8. **阿里巴巴、淘宝、亚信、华为等公司的面试题**:这些公司的面试题通常会结合公司业务和技术特点,如阿里巴巴的中间件技术、淘宝的高并发场景处理、亚信的通信行业解决方案、华为的硬件和网络技术等。 9. **笔试...
亚信联创面试题java基础知识 亚信联创笔试2011浙工大10月 2010亚信联创java笔试题 操作系统复习题(1)
### 面试题知识点解析 #### 1. 你希望做哪方面的工作 - **解析**:这是一个开放性问题,旨在了解应聘者的兴趣方向及职业规划。应聘者可以从技术角度出发,比如偏好后端开发、系统架构设计等;也可以从项目类型出发...
然而,理解如何手动管理字符串也很重要,尤其是在面试或学习底层原理时。`String` 类的构造、拷贝构造、析构和赋值操作涉及深拷贝的概念,确保每个 `String` 对象拥有自己的一份数据副本,避免数据共享引发的问题。 ...
大数据常见面试,根据自己面试经验总结 hadoop spark scala hive hbase flume kafka
│ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...