用游标批量更改数据的问题
两个表,我需要用一个表去更新另外一个表,但是两个表的结构不一样,
slzk_gk_spbmk_mod中字段如下:xgzd,yz,xz,sfzh
slzk_gk_spbmk中部分字段如下:sfzh,xm,zzmm,yjdz...
slzk_gk_spbmk_mod中的xgzd存储的时要在slzk_gk_spbmk中修改的字段,比如xgzd=xm,xz是要更新后的值,yz是更新前的值,例如:
slzk_gk_spbmk_mod
xgzd yz xz sfzh
xm 张三 张四 513901199406180240
slzk_gk_spbmk
sfzh xm zzmm yjdz
513901199406180240 张三 共青团员 四川成都
更新后:
sfzh xm zzmm yjdz
513901199406180240 张四 共青团员 四川成都
我写的如下,始终不对,麻烦各位给个方法:
use slzk_zk
declare MyCur cursor
for select xgzd,xz,sfzh from slzk_gk_spbmk_mod
open Mycur
declare @spbmk_zd char(10)
declare @spbmk_xz char(254)
declare @spbmk_sfzh char(18)
fetch from Mycur into @spbmk_zd,@spbmk_xz,@spbmk_sfzh
while @@fetch_status=0
begin
Set @spbmk_zd=replace(@spbmk_zd,' ','')
print @spbmk_zd print @spbmk_sfzh
update slzk_gk_spbmk set @spbmk_zd=@spbmk_xz where sfzh=@spbmk_sfzh
fetch next from Mycur into @spbmk_zd,@spbmk_xz,@spbmk_sfzh
end
close Mycur
deallocate Mycur
------解决方案--------------------
你的意思是不是就是根據兩個表的身份證號關聯,用slzk_gk_spbmk_mod表的xz去更新slzk_gk_spbmk表的xm嘛,不用遊標就可以.直接寫
SQL code
update slzk_gk_spbmk
set xm=repalce(a.xz,' ','')
from slzk_gk_spbmk_mod as a,slzk_gk_spbmk as b
where a.sfzh=b.sfzh