zoukankan      html  css  js  c++  java
  • 生成Insert语句的存储过程

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spGenInsertSQL]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[spGenInsertSQL]
    GO
    
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    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)                                
    
                         then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'
    
                    when xtype in (58,61)
    
                         then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'
    
                   when xtype in (167)
    
                         then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
    
                    when xtype in (231)
    
                         then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
    
                    when xtype in (175)
    
                         then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'
    
                    when xtype in (239)
    
                         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(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename
    
    --print @sql
    
    exec (@sql)
    
    end
    
    
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
    
    --==============================第二个存储过程
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spGenInsertSQLHan]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[spGenInsertSQLHan]
    GO
    
    SET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GO
    
    CREATE   proc spGenInsertSQLHan (@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)                                
    
                         then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'
    
                    when xtype in (58,61)
    
                         then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'
    
                   when xtype in (167)
    
                         then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
    
                    when xtype in (231)
    
                         then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
    
                    when xtype in (175)
    
                         then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'
    
                    when xtype in (239)
    
                         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
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
  • 相关阅读:
    react萌新的读书笔记(一)
    python 读取目录下的文件
    scrapy爬虫入门
    iPad和iPhone如何保护自己的隐私?
    郭盛华动真格了!新公司获百亿融资,网友:还招人不
    僵尸网络瞄准Linux服务器
    中美黑客谁更强?揭秘郭盛华与凯文的传奇故事
    VMware新致命漏洞,黑客可远程控制你的系统
    中国两大网络守护神,为祖国默默付出着,向他们致敬!
    Web应用程序已成为黑客的首要目标
  • 原文地址:https://www.cnblogs.com/accumulater/p/7233060.html
Copyright © 2011-2022 走看看