2019最新成为HR专家的100门必修课全套课程
限时抢购仅需19元(原价3600元)

亚信科技(asiainfo) 认领

计算机/互联网/通信/电子  上海   500-1000人  国企/上市公司

  1. 首页
  2. 公司
  3. 亚信科技(asiainfo)
  4. 亚信科技(asiainfo)软件工程师面试经验&面试问题

亚信科技(asiainfo)面试经验

面试失败 北京 难度一般

亚信科技(asiainfo)软件工程师面试经验&面试问题

应聘公司
亚信科技(asiainfo)
面试职位
面试时间
2011-04-21 — 2011-04-21

面试问题

简单的自我介绍后,就出了上面的题目,巨汗

面试过程

现有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中。<br><br>写出存储过程。<br><br>create or replace procedure test_sp_afa<br><br>is<br><br> ls_detail_data varchar2(4000);<br><br> cursor c1 is select a.bill_id from a, b where a.bill_id=b.bill_id;<br><br>begin<br><br> for iii in c1 loop<br><br> --拆分b表,写入test_b(这个过度表很恶心)<br><br> insert into test_b<br><br> select substr(detail_data,rownum*16-15,7) daima0,substr(detail_data,rownum*16-15,9) feiy00<br><br> from b<br><br> start with bill_id=iii.bill_id<br><br> connect by bill_id=iii.bill_id and rownum&lt;=ceil(length(trim(detail_data))/16);<br><br> --拆分a表,和test_b连接.<br><br> merge into test_b bb<br><br> using (<br><br> select substr(detail_data,rownum*16-15,7) daima0,substr(detail_data,rownum*16-15,9) feiy00<br><br> from a<br><br> start with bill_id=iii.bill_id<br><br> connect by bill_id=iii.bill_id and rownum&lt;=ceil(length(trim(detail_data))/16)<br><br> ) aa<br><br> on (aa.daima0=bb.daima0)<br><br> when matched then<br><br> update set bb.feiy00+aa.feiy00<br><br> when not matched then<br><br> insert values (aa.daima0,aa.feiy00);<br><br> --取连接后的detail_data 值<br><br> select max(detail_data) into ls_detail_data <br><br> from <br><br> (<br><br> select replace(sys_connect_by_path(rpad(daima0,7,' ')||rpad(feiy00,9,' '),','),',') detail_data<br><br> from <br><br> (select a.*,rownum rn <br><br> from test_b a ) <br><br> start with rn=1 <br><br> connect by rn=prior rn+1<br><br> );<br><br> --修改b表对应记录<br><br> update b<br><br> set detail_data =ls_detail_data<br><br> where bill_id=iii.bill_id;<br><br> --删除test_b内容<br><br> truncate table test_b;<br><br>end loop;<br><br> --exception<br><br>end;

我要分享面试经验

正在加载验证码...

其它公司面试经验
亚信科技(asiainfo)其它面试经验