好久没写代码,今天刚刚给客户写了点

针对客户自定义外挂导致的数据库完整性问题,通过查询并更新重复卡号对应的人员编号来解决离职与在职员工数据混乱的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

真郁闷,这家客户自己写外挂把我们的数据库完整性给破坏了,还要我们修复icon18.gif

唉,贴出来做个纪念吧......

None.gifdeclare @cardnum nvarchar(80)
None.gif
declare @personid nvarchar(80)
None.gif
declare @accessionstate int
None.gif
declare @personid222 nvarchar(80)
None.gif
declare _cor cursor for 
None.gif
select cardnum as cn from psnaccount 
None.gif
where cardnum <>'' group by cardnum
None.gif
having count(cardnum)>1  order by cn desc 
None.gif
None.gif
open _cor
None.gif
FETCH NEXT FROM _cor INTO @cardnum
None.gif
None.gif   
WHILE @@FETCH_STATUS = 0
None.gif   
BEGIN
None.gif
None.gif      
PRINT '  ' + @cardnum
None.gif    
set @personid = ''
None.gif    
set @personid222 = ''
ExpandedBlockStart.gifContractedBlock.gif    
/**//* 查询出离职人员编号  */
None.gif    
declare personid_cursor cursor for
None.gif    
select top 1 personid,accessionstate from psnaccount where cardnum = @cardnum and accessionstate = 4
None.gif    
open personid_cursor
None.gif    
FETCH next from personid_cursor into @personid,@accessionstate
None.gif        
WHILE @@FETCH_STATUS = 0
None.gif           
BEGIN
None.gif            
fetch next from personid_cursor into @personid,@accessionstate
None.gif        
END
None.gif    
close personid_cursor
None.gif    
deallocate personid_cursor
ExpandedBlockStart.gifContractedBlock.gif    
/**//* END 查询出离职人员编号  */
None.gif
ExpandedBlockStart.gifContractedBlock.gif    
/**//* 查询出在职人员编号 */
None.gif    
declare personid_cursor cursor for
None.gif    
select top 1 personid,accessionstate from psnaccount where cardnum = @cardnum and accessionstate = 2
None.gif    
open personid_cursor
None.gif    
FETCH next from personid_cursor into @personid222,@accessionstate
None.gif        
WHILE @@FETCH_STATUS = 0
None.gif           
BEGIN
None.gif            
fetch next from personid_cursor into @personid222,@accessionstate
None.gif        
END
None.gif    
close personid_cursor
None.gif    
deallocate personid_cursor
ExpandedBlockStart.gifContractedBlock.gif    
/**//* END 查询出在职人员编号  */
None.gif
ExpandedBlockStart.gifContractedBlock.gif    
/**//* 更新编号 */
None.gif    
if @personid <>'' and @personid222 <>''
None.gif    
BEGIN
None.gif        
UPDATE atdtimecarddata set PERSONID = @personid222 where personid = @personid and receivedate >='2005-09-12'
None.gif    
END
ExpandedBlockStart.gifContractedBlock.gif    
/**//* END 更新编号 */
None.gif
None.gif      
FETCH NEXT FROM _cor INTO @cardnum
None.gif   
None.gif   
END
None.gif
CLOSE _cor
None.gif
DEALLOCATE _cor

转载于:https://www.cnblogs.com/minbear/archive/2005/09/28/246084.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值