zoukankan      html  css  js  c++  java
  • MSSQL生成 Insert 语句的 存储过程。

    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

    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    DISTINCT 方法用于返回唯一不同的值 。
    UNION操作用于合并两个或多个 SELECT 语句的结果集。
    JOIN方法也是连贯操作方法之一
    HAVING方法也是连贯操作之一
    GROUP方法也是连贯操作方法之一
    page方法也是模型的连贯操作方法之一
    limit方法也是模型类的连贯操作方法之一
    order方法属于模型的连贯操作方法之一
    field方法属于模型的连贯操作方法之一
    data方法也是模型类的连贯操作方法之一,
  • 原文地址:https://www.cnblogs.com/newsea/p/1519206.html
Copyright © 2011-2022 走看看