中国开发网: 论坛: 程序员情感CBD: 贴子 243823
疯子张
累啊——每天都在做这样的事情,比没没还唐僧。
我 说:
我上次发给你的SQL执行了么?
同事MM 说:
没有呢,还,
同事MM 说:
对了还有那个删除金融机构的存储过程一直都没有成功,
我 说:
为什么执行不成功?
我 说:
是创建不了还是执行错误?
同事MM 说:
做了,我还没执行,那个删除金融机构的,不成功
同事MM 说:
他们业务在执行,那几张有问题的他们现在没不需要发出托收所以我就先仅这块改掉
我 说:
你执行一下那个过程,把错误信息发给我。
同事MM 说:
对了,我想问下,那个票据明细表中的记息到期日是贴现日期还是他们的那个表中的逆回购到期日呀
我 说:
都不是。
我 说:
这几个是不同的日期。
同事MM 说:
今天没有报错,我让那边试试可不可以删除
我 说:
删除啥?
同事MM 说:
奥,我现在让他们试试可不可以删除重复的金融机构
我 说:
为什么让他们删呀?
我 说:
没明白你的意思。
我 说:
我那个过程如果执行成功了,就已经删除了重复的金融机构。
同事MM 说:
那个删除金融机构的那个存储过程那会在我们公司的机子上不能执行成功今天我看没有报错误信息
我 说:
不需要再手工操作的。
同事MM 说:
奥,那么以后他们也可以删掉重复的金融机构的啦
我 说:
你查一下还有没有重复的记录:select hmc,count from cpfktable group by hmc having count >1
我 说:
MSN真变态,把括号星号变成了一颗星。
同事MM 说:
有记录
同事MM 说:
没有重复的
我 说:
这个SQL语句执行有结果集么?
同事MM 说:

我 说:
有就说明还是有重复记录。
我 说:
有多少条记录?
同事MM 说:
70
我 说:
那说明还有70个行名称重复。
同事MM 说:
奥,那就是那个没有被删掉的,
我 说:
按道理说,执行了那个存储过程,就应该自动清除重复记录了。
同事MM 说:
不过那个执行现在没有报错,原来就不能执行
我 说:
你可以再执行一遍。
同事MM 说:
还是有70多笔
我 说:
你随便挑一笔,查询一下,看看是否有多条记录?
我 说:
从这70多笔中挑一条。
我 说:
select * from cpfktable where hmc =行名称。
同事MM 说:
有的hbh重复
同事MM 说:
不过刚才他们说要发托收我现在还是先试试那个托收的问题吧
同事MM 说:
update element set cpid=hbh
from cpfktable
where cdr=hmc and pcode=批次号。
?
同事MM 说:
就是这句吧
我 说:
是的。
我 说:
你先修改一批,然后看看是否正确。
同事MM 说:
刚才执行了下没有改变呀
我 说:
批次号你输得是否正确?
同事MM 说:
现在那个变了,已经
我 说:
那就对了。
我 说:
让他们看一下托收的承兑行信息是否正确。
同事MM 说:
你做的事情总是那么有把握
我 说:
哪里哪里。我不在现场,也是瞎子摸象。
同事MM 说:
有个问题比较奇怪,原来那个错误是出票人开户行都一样,现在改了其中的一些但是没有改完全
我 说:
你要看一下,那个托收凭证上的各项都取自哪里。
同事MM 说:
不是很明白,你说是哪个数据表吗?
同事MM 说:
我记的是ts_temp
我 说:
不是,ts_temp中只保留了托收日期,票据编号等少数信息。
我 说:
承兑人的信息还是从cpfktable中取的。
我 说:
你要看一下程序,形成托收凭证的SQL都是从哪里取的数据。
同事MM 说:
不是是那个改过的买入清单列表中的出票人开户行改的不全
我 说:
不全是有可能的,因为承兑人是字符串,可能在cpfktable中没有与此名称对应的记录。
我 说:
如果真有这样的情况,就比较麻烦,需要找出不正确的,然后人工跟cpfktable表中的进行对照。
同事MM 说:
因为我看到比如那个承兑人名称是中行宁波江东支行,可是出票人开户行是中信实业银行石家庄分行
同事MM 说:
这个错误的就比较多了
我 说:
当时我就知道可能有这种情况出现。
我 说:
如果这样,就没有更好的办法了,只能手工修改了。
同事MM 说:
那么现在如何办呢?手工修改?
我 说:
因为承兑人是字符串,可能没有对应的档案信息。
我 说:
你到cpfktable中,用模糊查询寻找能够匹配的档案,然后手工修改。
我 说:
select cdr,hmc from element,cpfktable
我 说:
where cpid=hbh and cdr<>hmc and pcode=批次号。
我 说:
这个语句可以帮你查询出承兑人跟银行名称不匹配的记录。
同事MM 说:
没有记录的话就是对的对吧
我 说:
如果某批次没有记录,就是全部兑上了。
同事MM 说:
如果有如何处理
同事MM 说:
你说是不是就算在买入那里批导是正确的也可能出现这样的出票人开户行有问题的情况
我 说:
如果不是连续的,就应该没问题,你现在先把那22批处理一下。
我 说:
如果有,就需要找出承兑人的hbh,然后修改到element表的cpid字段中。
我 说:
需要手工查找最相近的。
同事MM 说:
现在这个hbh相同确出现不同的hmc
我 说:
那没有什么好办法了,手工查,我感觉应该不多。
同事MM 说:
怎么会出现这样的hbh一样但是hmc却有很大的不同的
我 说:
不是的,一个hbh肯定只能对应一个hmc的,hbh是主键。
我 说:
问题是cdr跟hmc对应不上,这个不是hbh的问题。
同事MM 说:
对,看看就是的呀好像还不少的呀
我 说:
恩。多少我不能确定,大部分应该能对上。
同事MM 说:
那我现在查出来应该在后台一条条的改了
我 说:
恩。可能比较麻烦。
同事MM 说:
update element set hmc=cdr from cpfktable where cdr<>hmc and pcode='ZTY200500038-01' and hbh='977001'
这样对吗你看看
我 说:
错了。element中没有hmc这个字段。
我 说:
行编号不能加引号。修改要针对票据,不能对批次。
我 说:
这个SQL有好几处错误。
我 说:
我去吃饭。回来再说。
同事MM 说:
那两个问题你再帮我想想该如何做的好
我 说:
哪两个问题?
我 说:
首先用我给你的SQL查处cdr跟hmc不一样的。
我 说:
然后手工修改。只能这样了。
同事MM 说:
手工到哪里修改呀,
同事MM 说:
对了,我想问问,我那个连续的修改吗,前面3天的或者4天的都还好,不晓得到了哪一笔那个调整天数的本来是3天的,就成了5天了,这个两天可能是什么加上去的呀
同事MM 说:
我是说可能是传的什么工作日延续或者什么才又调了两天出来?
我 说:
你修改这个干嘛?
我 说:
即使修改了,利息也已经计算错了。
我 说:
你现在要首先解决出票人开户行不正确的问题,让他们可以发托收。
同事MM 说:
奥,我现在不晓得我到哪里进行你说的手工修改?
同事MM 说:
就是我查出来那个hbh怎么手工修改呀
我 说:
update element set cpid=你查到的行编号
我 说:
where ph=票号
我 说:
当然为了防止修改错,可以再多加一些条件,确保修改的就是你要修改的票据。
同事MM 说:
这里的很多呀
同事MM 说:
不过就是那个光一个hmc还对应不同的票号都的改的啦
我 说:
你好象对这两张表的关系和问题还不是很清楚。
我 说:
现在是这样的:element表中的cpid对应就是出票人开户行,也就是发托收的目的行,托收凭证上打印出的信息就是这个行的信息。
我 说:
因为批量导入的连续有问题,导致cpid这个字段的值是错误的。
同事MM 说:
update element set cpid=977001 where ph='可是一个批次号下面有很多的票号的呀

我 说:
我们要做的就是根据cdr这个字段的值到cpfktable中找到对应的银行,然后将对应的行编号拿来替换掉element表中错误的cpid的值。
我 说:
明白没有?
我 说:
现在就是要根据票号而不是批次进行修改。
我 说:
因为同一批次中的cpid是不同的。
我 说:
也就是说,cpid是依赖于票据而非批次。
同事MM 说:
奥,那我只好根据票号一个一个改了
我 说:
恩,即使根据票号也是不安全的,因为票号可能有重复,不过你现在可以不考虑这个问题了。毕竟重复的极少。
同事MM 说:
我刚才改了一个批次号下面的票据,可是有的还是没有改掉的呀
同事MM 说:
我就是按你说的一个票号一个票号的update的
我 说:
我刚才改了一个批次号下面的票据,可是有的还是没有改掉的呀
同事MM 说:
我就是按你说的一个票号一个票号的update的

这两句话矛盾么?
我 说:
修改了没有改掉是什么意思?
同事MM 说:
对了那个页面上的出票人开户行取得是hmc
同事MM 说:
我是说我用你那个语句,可是出票人开户行还是有些是错误的
同事MM 说:
就是没有改过来的,因为我现在出票人开户行名称取的是cpbankvo.hmc
同事MM 说:
那个应该指的是cpfktable下面的hmc
同事MM 说:
所以那个修改element下面的cpid好像是没有用的啦
我 说:
你还没理解呀。凭证上就是根据element表中的cpid,到cpfktable中的找对应的hbh,然后根据行编号找到hmc的。
我 说:
所以现在就是要把cpid修改正确就可以了。
同事MM 说:
我觉得应该是,update cpfktable set hmc =cdr whereand cdr<>hmc and pcode='ZTY200500001'
我 说:
不对。
我 说:
你的想法是错的。
同事MM 说:
我用你的改不对呀可是
同事MM 说:
update element set cpid=977001 where ph='03614300'

我 说:
因为一个银行可能已经被用了很多次了,如果你把名字修改掉了,那以前所有正确的也都错了。
同事MM 说:
我修改了页面上还是现实错误的开户行的呀
我 说:
我跟你说了几遍了。我那个SQL不能100%修改完,如果能对应上的,就修改了,如果对应不上的,就只有手工改了。
同事MM 说:
我不知道你说的手工怎么改呀
同事MM 说:
update element set cpid=977001 where ph='03614300'
不就是你说的根据一个个票号手工改的吗
我 说:
是的,你的977001是从哪里来的?
我 说:
是根据cdr这个字段,到cpfktable中找到最类似的的hbh么?
同事MM 说:
select hbh,ph ,cdr,hmc from element,cpfktable where cpid=hbh and cdr<>hmc and pcode='ZTY200500001'

同事MM 说:
其中的hbh
我 说:
那你取这个行编号,这个本来就是cpid的,你还把这个编号赋给cpid,当然是没有任何改动。

……
几年前,技术抛弃了我;现在,我抛弃了技术。


相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录