oracle存储过程抽取数据

anyine 发布于 2013/09/09 20:30
阅读 915
收藏 0

现在项目有个需求,做个简单的ETL,想用存储过程做。

两个表(还款明细)A表、(代扣明细)B表,从表A查询出几列数据更新到表B的某几列中(查询条件来自表B),目前还款明细(来自于B)里面只有应还款、没有实还款,银联代扣后会有一个返回,返回的数据每一行已经插入表A,现在要把返回来的扣款结果更新到还款明细中。请指点一下存储过程怎么写。

如果这种方式不够好,请问什么方式会比较符合现有业务?谢谢

加载中
0
dodojava
dodojava
update B set B.xxx = A.xxx where B.id = A.id

你说的需求用这条足够了
dodojava
dodojava
回复 @anyine : 那给分吧,hoho
anyine
anyine
难道是我想复杂啦!汗
dodojava
dodojava
回复 @anyine : 那你把需求说的详细点吧
anyine
anyine
没那么简单
0
草雉旭日
草雉旭日
提升效率 的话,过程里面尽量不要使用 update 和游标,  使用 merge into
0
chally
chally
这个过程应该是财务上的应收与收款的核销,有点繁琐,关键问题在于每笔代扣与还款是否有线索号够关联上,如果代扣与还款明细没有关联的话,那就只能根据最早余额的办法,把2张表的记录根据时间排序,然后进行勾兑,从代扣表的第一条记录开始,拿着代扣金额到还款明细里去勾兑,有余额的话直接取下一条,余额不足的话,再继续取代扣表的第二条记录,以此类推,直到把代扣表的金额核销完。
chally
chally
回复 @anyine : 其实这个与表设计的关系不太大,而是实际业务能不能反映出没一笔代扣所对应的还款记录,如果实际业务操作的过程中做不到的话,那就只能用最早余额核销的办法,如果实际业务操作中能反映出每笔代扣对应的还款,那就是就多一张表来记录对应关系。
anyine
anyine
就是当初他们在设计表时候的缺陷、导致现在两边不好对应上!
返回顶部
顶部