zoukankan      html  css  js  c++  java
  • SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int

    --SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int

    --关键说明:
    --1、从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段
    --2、更新字段类型前如果该字段有默认值索引则应先删除掉对应的索引
    --3、数据表字段数据类型为tinyint在CodeSmith中读出来的是DbType.Byte类型,需要修正

    declare @TableName nvarchar(250)

    --声明读取数据库所有数据表名称游标mycursor1
    declare mycursor1 cursor for select name from dbo.SysObjects WHERE OBJECTPROPERTY(ID, 'IsUserTable') = 1
     --打开游标
    open mycursor1
    --从游标里取出数据赋值到我们刚才声明的数据表名变量中
    fetch next from mycursor1 into @TableName
    --如果游标执行成功 
    while (@@fetch_status=0)
    begin 

    --定义游标中要修正的字段名变量
    Declare @ColumnName nvarchar(255)
    Declare @ColumnID int
    --通过游标读取指定数据表的所有类型为tinyint的字段

    --声明游标mycursor2
    declare mycursor2 cursor for select name,colid from syscolumns Where ID=OBJECT_ID(@TableName) and xtype='48'  order by colid
     
    --打开游标
    open mycursor2


    --从游标里取出数据赋值到我们刚才声明的字段名变量中
    fetch next from mycursor2 into @ColumnName,@ColumnID
     
    --如果游标执行成功 
    while (@@fetch_status=0)
    begin
     
    --1、如果当前字段存在默认值索引则应先删除
    IF  EXISTS (select * from sys.default_constraints where parent_object_id=OBJECT_ID(@TableName) and parent_column_id=@ColumnID)
    BEGIN
    Declare @ConstraintName nvarchar(255)
    select @ConstraintName=name from sys.default_constraints where parent_object_id=OBJECT_ID(@TableName) and parent_column_id=@ColumnID
    exec ('ALTER TABLE ['+@TableName+'] DROP CONSTRAINT ['+@ConstraintName+']')

    END

    --2、更新当前字段[tinyint]类型为[int]类型
    exec ('ALTER TABLE ['+@TableName+'] ALTER COLUMN ['+@ColumnName+'] int')


    --用游标去取下一条记录
        fetch next from mycursor2 into @ColumnName,@ColumnID
    end

    --关闭游标
    close mycursor2
    --撤销游标
    deallocate mycursor2

     --用游标去取下一条记录
        fetch next from mycursor1 into @TableName
    end
    --关闭游标
    close mycursor1
    --撤销游标
    deallocate mycursor1

  • 相关阅读:
    解决Centos7下中文显示乱码
    Pycharm2019.2.1永久激活
    window 共享打印机
    看着前车轮胎能出库
    计算之道 (置换的玩笑)搜索
    GIS+=地理信息+云计算技术——私有云架构设计(2)网络资源规划
    串的模式匹配
    1.Linux下libevent和memcached安装
    STL--H
    【数据结构与算法】(二) c 语言链表的简单操作
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306740.html
Copyright © 2011-2022 走看看