• 根据表中记录生成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

  • 相关阅读:
    web架构
    网站开发的学习交流 系统架构 负载均衡
    数据库连接
    OpenCV4【12】边缘检测
    python基础_格式化输出(%用法和format用法)
    Python之telnetlib模块
    根据文字或图片来生成用于Banner输出的字符画
    Python3 range() 函数用法
    Python psutil cpu_percent调用说明
    @staticmethod和@classmethod的用法
  • 原文地址:https://www.cnblogs.com/fengyishou/p/1428847.html
Copyright © 2020-2023  润新知