解决方案: |
---根据表personvalue来修改人员相关表的人员编号,personvalue表存储人员编码的新旧值
declare @tblname varchar(40),@fldname varchar(40) --声明两个变量,用来存储表名和字段名称
declare newcur cursor for --建立游标newcur
--查询人员相关表的名称及相关字段
select sysobjects.[name] as tbl, syscolumns.[name] as fld from syscolumns left join sysobjects on sysobjects.id=syscolumns.id where (syscolumns.name='cPsn_Num' or syscolumns.name='cPersoncode' or syscolumns.name='cperson_id') and sysobjects.xtype='U' order by syscolumns.name
for read only
open newcur --打开游标
fetch next from newcur into @tblname,@fldname --开始遍历游标,赋值
WHILE @@FETCH_STATUS = 0 --标志游标是否已经遍历所有记录<>0时,结束
begin
print @tblname --打印表名
--更新相关表记录
exec(' update ' +@tblname +' set '+ @fldname+'=tempdb..personvalue.newvalue from tempdb..personvalue where '+@fldname+'=tempdb..personvalue.oldvalue')
fetch next from newcur into @tblname,@fldname --循环游标,并赋值
end
close newcur --关闭游标
deallocate newcur --释放游标
--由分公司金胜明提供 适用于U860
|