自动排除计算字段拷贝表数据

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

本文属spanzhang原创,其blog地址为:http://blog.csdn.net/spanzhang。引用或转贴请注明出处,谢谢!!

/*

作者:张友邦

时间:2005-03-03

描述:简单的拷贝一个表的内容

版本:1.0

历史:

注意:

*/

ALTER procedure dbo.x_p_copyTable

(

@tableName nvarchar(128),

@condition nvarchar(1024) = N'',

@remoteServer nvarchar(128) = N'TGM_OLD.span_tgm_020'

)

as

declare @sql nvarchar(4000)

set @sql = N'select @cnt = count(*)

from sysobjects, syscolumns

where sysobjects.id = syscolumns.id

and syscolumns.colstat = 1

and sysobjects.name = ''' + @tableName + N''''

declare @count int

execute sp_executesql @sql, N'@cnt int output', @count output

if @count > 0 begin

set @sql = N'set identity_insert ' + @tableName + N' on'

execute sp_executesql @sql

end

declare @columns nvarchar(2048)

set @columns = N''

select

@columns = @columns + syscolumns.name + N','

from sysobjects, syscolumns

where sysobjects.id = syscolumns.id

and syscolumns.iscomputed <> 1

and sysobjects.name = @tableName

if len(@columns) > 0 begin

set @columns = substring(@columns, 1, len(@columns) - 1)

end

set @sql = N'insert ' + @tableName + N'(' + @columns + N') '

+ N'select ' + @columns + N' from ' + @remoteServer + N'.dbo.' + @tableName

if @condition <> N'' begin

set @sql = @sql + N' where ' + @condition

end

execute sp_executesql @sql

if @count > 0 begin

set @sql = N'set identity_insert ' + @tableName + N' off'

execute sp_executesql @sql

end

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航