工作中,我们实施人员提出实现组织的同级次上下移动问题,我在处理时,没有考虑到并发的情况,节点的相关信息都是在界面上获得的,并不安全,日后看看在客户那里的应用吧,如果出现错误就加锁进行控制,
在更改组织分级内码时,用到了substring(),datalength()函数!因为在上下移动过程中,可能当前组织下面还有下集组织,跟它交换位置的组织下面也可能有下级组织,如果更新分级内码时,直接更改为对方的分级内码,在更改对方时就没法更改了,因为会出现两个重复的分级内码,这里可以先将其中一个的分级内码加个前缀以示区别,等到最后再进行更新,相关代码如下:
vsSql = "Begin UPDATE TBYSZZ SET TBYSZZ_FJNM='a" + vsLYFJNM + "'||SUBSTRING(TBYSZZ_FJNM," + (viLYLength + 1) + ",datalength(tbyszz_fjnm)) WHERE TBYSZZ_FJNM LIKE '" + vsMBFJNM + "%';";
vsSql += " UPDATE TBYSZZ SET TBYSZZ_FJNM='" + vsMBFJNM + "'||SUBSTRING(TBYSZZ_FJNM," + (viMBLength + 1) + ",datalength(tbyszz_fjnm)) WHERE TBYSZZ_FJNM LIKE '" + vsLYFJNM + "%';";
vsSql += " UPDATE TBYSZZ SET TBYSZZ_FJNM=SUBSTRING(TBYSZZ_FJNM,2,datalength(tbyszz_fjnm)) WHERE TBYSZZ_FJNM LIKE 'a" + vsLYFJNM + "%';End;";