Sql Server数据库列重命名存储过程使用

/********************************************************

         功能实现:为列重新命名
         参数说明:
         1.@TableName:   表名称
         2.@Old_ColName: 旧列名
         3.@New_ColName:  新列名

         使用说明:
         EXEC RenameColumnName 'TABLENAME','OLD_COLNAME','NEW_COLNAME'


*********************************************************/
CREATE PROC RenameColumnName  
     @TableName SYSNAME,
     @Old_ColName SYSNAME,
     @New_ColName SYSNAME
AS
BEGIN
     /************************************

           ----判断表的集中输入形式:
           1.schema.TableName
           2.TableName
           3.[TableName]
           4.[schema].[TableName]

     ************************************/

     SET NOCOUNT ON;

     DECLARE @Schema_Name SYSNAME=SCHEMA_NAME();--------当前默认的架构名
     DECLARE @SimpleTableName SYSNAME;
     DECLARE @Index AS INT=0;
     DECLARE @ColName SYSNAME;
     DECLARE @AllTableName SYSNAME;

     SET @TableName=REPLACE(REPLACE(@TableName,'[',''),']','');
     SET @Index=CHARINDEX('.',@TableName);
     IF @Index>0
         BEGIN
              SET @Schema_Name=LEFT(@TableName,@Index-1);
              SET @SimpleTableName=RIGHT(@TableName,LEN(@TableName)-@Index);
         END
    ELSE
         BEGIN
              SET @SimpleTableName=@TableName;
         END

IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=@Schema_Name AND TABLE_NAME=@SimpleTableName)
        BEGIN
            SET @ColName=@Old_ColName;
            IF EXISTS
               (
                 SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS 
                 WHERE TABLE_SCHEMA=@Schema_Name AND TABLE_NAME=@SimpleTableName AND COLUMN_NAME=@ColName
               )
               BEGIN
                  SET @AllTableName=@TableName+'.'+@Old_ColName;
                  EXEC SP_RENAME @AllTableName,@New_ColName
                  PRINT '修改成功!!!'
               END
            ELSE
              BEGIN
                  PRINT '要重命名的列不存在'
              END
        END
    ELSE
        BEGIN
            PRINT '当前表不存在';
        END

     SET  NOCOUNT OFF;
END

转载于:https://my.oschina.net/VictoryZhang/blog/886658

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值