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

  • 相关阅读:
    ie浏览器下,get请求缓存问题
    grunt 单独压缩多个js和css文件【转】
    初次接触nodejs,请多指教。
    浮躁是一种流行病【转】
    php安装配置那些事(本文纯属个人记事与技术无关)
    读取年份数组中的所有周六周天
    C#窗体中读取修改xml文件
    Power BI brief introduction
    D365 CRM online trial application
    TalkingData Cocos2dx集成指南【最新】
  • 原文地址:https://www.cnblogs.com/weihengblogs/p/4360634.html
Copyright © 2011-2022 走看看