• 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) andparent_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

  • 相关阅读:
    Fire and Motion[转载]
    HLSL2GLSL v0.9 Released
    CEGUI Release of 0.5.0 stable by CrazyEddie 6th November 2006
    MapInfo 连接Oracle
    MapInfo连接SQLServer
    视图的创建及使用(sql server 2005)
    MapInfo 建立永久表
    MapInfo Update Feature
    MapInfo导入.TAB和.mws的方法
    触发器的创建及使用(sqlserver 2000)
  • 原文地址:https://www.cnblogs.com/weihengblogs/p/4360634.html
Copyright © 2020-2023  润新知