22,301
社区成员




declare @var_sql varchar(8000)
declare @var_stable varchar(128)
declare @var_otable varchar(128)
declare @var_fldlist varchar(4000)
set @var_stable='lx1' --目标表名
set @var_otable='lx2' --源表名
set @var_fldlist=''
select @var_fldlist=@var_fldlist + t1.[name] + ',' from (
select b.[name] from sysobjects as a inner join syscolumns as b on a.[id]=b.[id]
where a.xtype='u' and a.[name]=@var_stable
) as t1 inner join
(
select b.[name] from sysobjects as a inner join syscolumns as b on a.[id]=b.[id]
where a.xtype='u' and a.[name]=@var_otable
) as t2 on t1.[name]=t2.[name]
set @var_fldlist=left(@var_fldlist,len(@var_fldlist)-1)
set @var_sql='insert into ' + @var_stable + '(' + @var_fldlist + ') select ' + @var_fldlist + ' from ' + @var_otable
print @var_sql
declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+a.name+'=b.'+a.name
from syscolumns a,syscolumns b
where a.id=object_id('A')
and b.id=object_id('B')
and a.name=b.name
and a.xusertype=b.xusertype
and a.name<>'ID'
exec('update A set '+@sql+' from B where A.ID=B.ID')