请问,怎么更改自定义数据类型,有一个自定义类型,由于要导数据到到多个表里面,但是数据长度大于表中字段自定义类型的长度(这些表都有字段用了这个自定义类型),现在我想能不能把这个自定义类型的长度扩展,而不是一个表一个表的去改类型。

解决方案 »

  1.   

    /*--修改自定义数据类型精度的示例 假设要修改的自定义变量名为aa--*/--1.修改自定义变量类型的名称
    exec sp_rename 'aa','aa_bak','USERDATATYPE'
    go--2.新增自定义变量(按新的精度)
    EXEC sp_addtype N'aa', N'numeric(20,2)', N'not null'
    go--3.修改表,使用新增的自定义变量declare @s varchar(8000)
    declare tb cursor local 
    for select 'alter table ['+object_name(a.id)+'] alter column ['
    +a.name+'] aa'
    from syscolumns a join systypes b on a.xusertype=b.xusertype
    where b.name='aa_bak' and objectproperty(a.id,N'IsUserTable')=1
    open tb
    fetch next from tb into @s
    while @@fetch_status=0
    begin
    exec(@s)
    fetch next from tb into @s
    end
    close tb
    deallocate tb
    go--刷新视图
    declare hCForEach cursor global for 
    select '[' + REPLACE(user_name(uid), N']', N']]')+'].['
    + REPLACE(object_name(id), N']', N']]')+ ']' 
    from dbo.sysobjects
    where xtype='V' and status>=0exec sp_MSforeach_worker 'sp_refreshview ''?'''