• 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

  • 相关阅读:
    向cmd中添加字体的方法
    学生成绩管理系统C++
    立即抢注我的免费1T云空间
    js原型
    step3 . day8数据结构之算法
    代码练习中的bug及修改方法
    step3 . day7数据结构之二叉顺序数的创建和二叉树的栈形式遍历
    step3 . day6数据结构之非线性表 满二叉树和不完全二叉树
    step3 . day5 数据结构之线性表 栈和队的应用-球钟问题
    step3 . day4 数据结构之线性表 栈和队
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306740.html
Copyright © 2020-2023  润新知