zoukankan      html  css  js  c++  java
  • 根据表中记录生成insert into语句的存储过程

    IF OBJECT_ID('spGenInsertSQL','P'IS NOT NULL 
    DROP PROC spGenInsertSQL
    GO
    CREATE   proc spGenInsertSQL (@tablename varchar(256))
    as
    begin
    declare @sql varchar(8000)
    declare @sqlValues varchar(8000)
    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)  --如果是数值型或MOENY型     

                         
    then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'

                    
    when xtype in (58,61--如果是datetime或smalldatetime类型

                         
    then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'convert(varchar,'+ name +',120)'+ '+'''''''''+' end'

                   
    when xtype in (167--如果是varchar类型

                         
    then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'

                    
    when xtype in (231--如果是nvarchar类型

                         
    then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'

                    
    when xtype in (175--如果是CHAR类型

                         
    then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'

                    
    when xtype in (239--如果是NCHAR类型

                         
    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 ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+'' + left(@sqlValues,len(@sqlValues)-4+ ')'' from '+@tablename
    --print @sql
    exec (@sql)
    end
    GO

    在执行存储过程时需要输入表明作为参数。

    例如:exec spGenInsertSQL  TableName

  • 相关阅读:
    jxl导入/导出excel
    iText导出pdf、word、图片
    Java CSV操作(导出和导入)
    Spring3.0+Hibernate+Atomikos集成构建JTA的分布式事务--解决多数据源跨库事务
    jQuery插件:跨浏览器复制jQuery-zclip
    微信小程序之表单提交
    微信小程序只之全局存储
    微信小程序之工具js封装与使用
    重构的艺术 深入认识
    重构的素养
  • 原文地址:https://www.cnblogs.com/fengyishou/p/1428847.html
Copyright © 2011-2022 走看看