根据表中数据生成insert语句的存储过程
发表于:2007-07-02来源:作者:点击数:
标签:
有个缺点就是标识种子的列 也insert了 CREATE proc spGenInsert SQL (@tablename varchar(256)) as begin declare @sql varchar(8000) declare @sqlValues varchar(8000) set @sql =@# (@# set @sqlValues = @#values (@#@#+@# select @sqlValues = @sqlValu
有个缺点……就是标识种子的列 也insert了
CREATE proc spGenInsert
SQL (@tablename varchar(256))
as
begin
declare @sql varchar(8000)
declare @sqlValues varchar(8000)
set @sql =@# (@#
set @sqlValues = @#values (@#@#+@#
select @sqlValues = @sqlValues + cols + @# + @#@#,@#@# + @# ,@sql = @sql + @#[@# + name + @#],@#
from
(select case
when xtype in (48,52,56,59,60,62,104,106,108,122,127)
then @#case when @#+ name +@# is null then @#@#NULL@#@# else @# + @#cast(@#+ name + @# as varchar)@#+@# end@#
when xtype in (58,61)
then @#case when @#+ name +@# is null then @#@#NULL@#@# else @#+@#@#@#@#@#@#@#@#@# + @# + @#cast(@#+ name +@# as varchar)@#+ @#+@#@#@#@#@#@#@#@#@#+@# end@#
when xtype in (167)
then @#case when @#+ name +@# is null then @#@#NULL@#@# else @#+@#@#@#@#@#@#@#@#@# + @# + @#replace(@#+ name+@#,@#@#@#@#@#@#@#@#,@#@#@#@#@#@#@#@#@#@#@#@#)@# + @#+@#@#@#@#@#@#@#@#@#+@# end@#
when xtype in (231)
then @#case when @#+ name +@# is null then @#@#NULL@#@# else @#+@#@#@#N@#@#@#@#@#@# + @# + @#replace(@#+ name+@#,@#@#@#@#@#@#@#@#,@#@#@#@#@#@#@#@#@#@#@#@#)@# + @#+@#@#@#@#@#@#@#@#@#+@# end@#
when xtype in (175)
then @#case when @#+ name +@# is null then @#@#NULL@#@# else @#+@#@#@#@#@#@#@#@#@# + @# + @#cast(replace(@#+ name+@#,@#@#@#@#@#@#@#@#,@#@#@#@#@#@#@#@#@#@#@#@#) as Char(@# + cast(length as varchar) + @#))+@#@#@#@#@#@#@#@#@#+@# end@#
when xtype in (239)
then @#case when @#+ name +@# is null then @#@#NULL@#@# else @#+@#@#@#N@#@#@#@#@#@# + @# + @#cast(replace(@#+ name+@#,@#@#@#@#@#@#@#@#,@#@#@#@#@#@#@#@#@#@#@#@#) as Char(@# + cast(length as varchar) + @#))+@#@#@#@#@#@#@#@#@#+@# end@#
else @#@#@#NULL@#@#@#
end as Cols,name
from syscolumns
where id = object_id(@tablename)
) T
set @sql =@#select @#@#INSERT INTO [@#+ @tablename + @#]@# + left(@sql,len(@sql)-1)+@#) @# + left(@sqlValues,len(@sqlValues)-4) + @#)@#@# from @#+@tablename
--print @sql
exec (@sql)
end
GO
原文转自:http://www.ltesting.net