两个表 rskp(人事卡片表)和bx(保险表)
rskp为员工的基本信息,包括工号bxh,工作部门gzbm,工作班组gzbz,出生日期,入厂日期等。
bx为员工的保险信息,包括工号bxh,工作部门gzbm,工作班组gzbz,保险金额等。
两个表的key均为bxh。
bx表的数据是先从rskp中取出工号bxh,工作部门gzbm,工作班组gzbz,然后添加保险金额。
当有新员工入厂,会在rskp中自动添加员工信息,但是bx中没有添加,所以需要对比两个表,将bx表中没有的员工添加进来。
我用的是游标,可是怎么写都不对。
---------------------------------------------
declare @bxhbz char(6),@bxhkp char(6),@maxbxhkp char(6),@maxbxhbz char(6)
select @maxbxhbz=max(bxh) from bx
select @maxbxhkp=max(bxh) from rscard.dbo.yx_rskp
declareqnbzaddnew cursor
for select bxh from bx order by bxh
declarerskpnew cursor
for select bxh from rscard.dbo.yx_rskp order by bxh
open rskpnew
fetch next from rskpnew into @bxhkp
while @@fetch_status-1
begin
open qnbzaddnew
fetch next from qnbzaddnew into @bxhbz
while @@fetch_status-1
begin
while @bxhkp@bxhbz
begin
if @bxhkp=@bxhbz
break
if @bxhbz=@maxbxhbz
begin
insert bx(bxh,gzbm) select a.bxh,b.gzbm from rscard.dbo.yx_rskp b where b.bxh=@bxhkp
end
end
fetch next from qnbzaddnew into @bxhbz
end
close qnbzaddnew
fetch next from rskpnew into @bxhkp
end
deallocate qnbzaddnew
close rskpnew
deallocate rskpnew