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

  • 相关阅读:
    Apache 的 ab 压测工具快速使用
    Go_22: Golang 命令行 test 应用
    Go_21: Golang 中 time 包的使用二
    ElasticStack系列之十八 & ElasticSearch5.x XPack 过期新 License 更新
    Go 语言编程规范
    ElasticStack系列之十七 & 大文本搜索性能提升方案
    ElasticStack系列之十六 & ElasticSearch5.x index/create 和 update 源码分析
    ElasticStack系列之十五 & query cache 引起性能问题思考
    golang 配置文件读取
    pandoc安装
  • 原文地址:https://www.cnblogs.com/fengyishou/p/1428847.html
Copyright © 2011-2022 走看看