根据表中数据生成insert语句的存储过程

本文介绍了一种使用T-SQL动态生成INSERT语句的方法,通过存储过程sp_genInsertSql来实现针对不同表结构自动生成相应的INSERT语句,适用于快速进行数据迁移或脚本创建。
View Code
create   proc spgeninsertsql (@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

 

转载于:https://www.cnblogs.com/kingkoo/archive/2012/03/07/2383172.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值