alter procedure pGetInsertSQL (@tablename varchar(256))
---WITH ENCRYPTION
as
begin
---得到表中的SQL
-- declare @tablename varchar(256)
-- set @tablename = 'Design_DBPageStruct'
--Create Table SQLtmp
--(
--sql varchar(4000)
--)
---Delete from SQLtmp
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SQLtmp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
Create Table SQLtmp
(
sql varchar(4000)
)
declare @sql varchar(4000)
declare @sqlValues varchar(4000)
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 ='insert into SQLtmp (sql) select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ');'' from '+@tablename + ' '
-- print @sql
--exec (@sql)
Select sql from SQLtmp
---Select sql from SQLtmp FOR XML AUTO
end
go