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
  • 相关阅读:
    AngularJS之ng-repeat指令
    AngularJS之ng-controller指令
    HttpClient通过Post上传文件
    response.setHeader()的用法
    response 设置响应头的常用几种方法
    理解HTTP session原理及应用
    mysqldump 利用rr隔离实现一致性备份
    Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
    AngularJS之ng-model指令
    AngularJS之ng-app指令
  • 原文地址:https://www.cnblogs.com/accumulater/p/7233060.html
Copyright © 2011-2022 走看看