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

  • 相关阅读:
    Lesson 61-62 Are Relatives Important to You?
    Lesson 59-60 Househusband
    Lesson 57-58 Cosmetic Surgery
    Lesson 55-56 TV Commercials
    Blash
    高维宇宙
    巴卡尔
    完美标号
    小A点菜(luogu 1164)简单DP
    聪明的质监员(qc)
  • 原文地址:https://www.cnblogs.com/fengyishou/p/1428847.html
Copyright © 2011-2022 走看看