ryhan

drop proc proc_insert
go
create proc proc_insert (@tablename varchar(256))
as
begin
        set nocount on
        declare @sqlstr varchar(4000)
        declare @sqlstr1 varchar(4000)
        declare @sqlstr2 varchar(4000)
        select @sqlstr=\'select \'\'insert \'+@tablename
        select @sqlstr1=\'\'
        select @sqlstr2=\' (\'
        select @sqlstr1= \' values ( \'\'+\'
        select @sqlstr1=@sqlstr1+col+\'+\'\',\'\'+\' ,@sqlstr2=@sqlstr2+name +\',\' from (select case
--        when a.xtype =173 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(\'+convert(varchar(4),a.length*2+2)+\'),\'+a.name +\')\'+\' end\'
        when a.xtype =127 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(20),\'+a.name +\')\'+\' end\'
        when a.xtype =104 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(1),\'+a.name +\')\'+\' end\'
        when a.xtype =175 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'replace(\'+a.name+\',\'\'\'\'\'\'\'\',\'\'\'\'\'\'\'\'\'\'\'\')\' + \'+\'\'\'\'\'\'\'\'\'+\' end\'
        when a.xtype =61  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'convert(varchar(23),\'+a.name +\',121)\'+ \'+\'\'\'\'\'\'\'\'\'+\' end\'
        when a.xtype =106 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(\'+convert(varchar(4),a.xprec+2)+\'),\'+a.name +\')\'+\' end\'
        when a.xtype =62  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(23),\'+a.name +\',2)\'+\' end\'
        when a.xtype =56  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(11),\'+a.name +\')\'+\' end\'
        when a.xtype =60  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(22),\'+a.name +\')\'+\' end\'
        when a.xtype =239 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'replace(\'+a.name+\',\'\'\'\'\'\'\'\',\'\'\'\'\'\'\'\'\'\'\'\')\' + \'+\'\'\'\'\'\'\'\'\'+\' end\'
        when a.xtype =108 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(\'+convert(varchar(4),a.xprec+2)+\'),\'+a.name +\')\'+\' end\'
        when a.xtype =231 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'replace(\'+a.name+\',\'\'\'\'\'\'\'\',\'\'\'\'\'\'\'\'\'\'\'\')\' + \'+\'\'\'\'\'\'\'\'\'+\' end\'
        when a.xtype =59  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(23),\'+a.name +\',2)\'+\' end\'
        when a.xtype =58  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'convert(varchar(23),\'+a.name +\',121)\'+ \'+\'\'\'\'\'\'\'\'\'+\' end\'
        when a.xtype =52  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(12),\'+a.name +\')\'+\' end\'
        when a.xtype =122 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(22),\'+a.name +\')\'+\' end\'
        when a.xtype =48  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(6),\'+a.name +\')\'+\' end\'
--        when a.xtype =165 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(\'+convert(varchar(4),a.length*2+2)+\'),\'+a.name +\')\'+\' end\'
        when a.xtype =167 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'\'\'\'\'\'\'\'\'+\'+\'replace(\'+a.name+\',\'\'\'\'\'\'\'\',\'\'\'\'\'\'\'\'\'\'\'\')\' + \'+\'\'\'\'\'\'\'\'\'+\' end\'
        else \'\'\'NULL\'\'\'
        end as col,a.colid,a.name
        from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and  a.xtype <>36
        )t order by colid
       
        select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+\') \'+left(@sqlstr1,len(@sqlstr1)-3)+\')\'\' from \'+@tablename
--  print @sqlstr
        exec( @sqlstr)
        set nocount off
end
go

select * from systypes


Exec proc_insert  Users


本文来自CSDN博客,转载出处:http://blog.csdn.net/cfyme/archive/2009/04/19/4091272.aspx

分类:

技术点:

相关文章:

  • 2021-04-17
  • 2021-10-31
  • 2021-11-18
  • 2021-12-22
  • 2021-10-16
  • 2021-12-05
猜你喜欢
  • 2021-05-10
  • 2021-12-05
  • 2021-09-24
  • 2021-11-23
  • 2021-08-24
  • 2021-12-05
  • 2021-11-28
相关资源
相似解决方案