CREATE     proc     [dbo].[proc_insert]     (@tablename     varchar(256))      
  as      
  begin      
    set     nocount     on      
    declare     @sqlstr     varchar(8000)      
    declare     @sqlstr1     varchar(8000)      
    declare     @sqlstr2     varchar(8000)      
    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     =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     =167     then     'case     when     '+'[' + a.name + ']'+'     is     null     then     ''NULL''     else     '+'''''''''+'+'replace('+'[' + a.name + ']'+','''''''','''''''''''')'     +     '+'''''''''+'     end'      
    else     '''NULL'''      
    end     as     col,a.colid,'[' + a.name + ']'    as  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      
     exec(     @sqlstr)      
    set     nocount     off      
  end      

GO

 

MSSQL生成 Insert 语句的 存储过程。_MySQL   作者:NewSea 

  如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。