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原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    pip遇见的format问题
    opencv配置
    WPF学习笔记2
    WPF笔记1 用VS2015创建WPF程序
    C#基础知识
    电脑中毒了。
    感觉又学到了不少,在这里写下来,但也有一个问题,不知道是为甚吗?
    通过对HTML有一定的了解后,现在我开始学HTML DOM了。
    此情可待成追忆,只是当时已惘然。
    常用PS快捷键
  • 原文地址:https://www.cnblogs.com/newsea/p/1519206.html
Copyright © 2011-2022 走看看