zoukankan      html  css  js  c++  java
  • sp_Rename批量修改数据表的列名

    背景:

    在一个数据表中,数据表的表名命名如下:AA_UserDefineArticleDTO_XXXX_Ext,数据表有很多字段命名为:UserDefineArticleDTO_YYYYY,如下图所示。

    先需要对表的字段进行重命名,批量修改列名称。 

    编写下述sql procedure:

    Drop procedure SetDtoExt
    go
    Create procedure SetDtoExt
    @dtoOldName varchar(50),
    @dtoNewName varchar(50),
    @dbName varchar(50)
    AS
        Declare @columnName varchar(128)
        Declare @newColumnName varchar(128)
        Declare @sql varchar(256)
        declare columnName_cursor cursor
        for select syscolumns.name,replace(syscolumns.name,@dtoOldName,@dtoNewName) FROM syscolumns
        WHERE syscolumns.id = object_id(@dbName+'.dbo.AA_'+@dtoOldName+'_Ext') and syscolumns.name like '%'+@dtoOldName+'%'
    BEGIN
        open columnName_cursor
        fetch next from columnName_cursor into @columnName,@newColumnName
        while @@fetch_status=0
        begin
            --exec sp_rename 'AA_'+@dtoOldName+'_Ext.'+@columnName,@newColumnName,'COLUMN'
            --SET @sql='sp_rename'+' ''[AA_'+@dtoOldName+'_Ext].['+@columnName+']'','''+@newColumnName+''',''COLUMN''';
            --EXEC(@sql)
            SET @sql='sp_rename'+' ''AA_'+@dtoOldName+'_Ext.'+@columnName+''','''+@newColumnName+''',''COLUMN''';
            EXEC(@sql)
            fetch next from columnName_cursor into @columnName,@newColumnName
        end
        close columnName_cursor
        deallocate columnName_cursor
    END
    
    go
    exec SetDtoExt 'UserDefineArticleDTO_0001','UseStatusDTO','UFTData90901_001';
    1. 在执行重命名操作时,注意需要添加引号,不过不添加引号就会报错!
    2. 表可以用方括号括起来,也可以不括起来。
    3. 在打开游标后需要添加fetch next from columnName_cursor into @columnName,@newColumnName,否者会陷入死循环!

    欢迎大家交流!

  • 相关阅读:
    数学工具WZgrapher
    零线和地线的区别,示波器如何测量市电?
    使用直流稳压电源时的注意事项!
    中文全角和半角输入有什么区别?
    ThinkingRock:使用方法
    2014记首
    如何使用Excel绘制甘特图
    AStyle代码格式工具在source insight中的使用
    STM32F103系列命名规则
    上市公司行情查询站点
  • 原文地址:https://www.cnblogs.com/tgcoy/p/2519262.html
Copyright © 2011-2022 走看看