您的位置:首页 > 数据库

SQL修改指定数据库的表数据类型【如将表中所有varchar类型修改为nvarchar】

2012-08-15 15:32 591 查看
declare @num int,@tableName varchar(50),@columnName varchar(50),

@typeName varchar(50),@max_length int,@str varchar(500) = ''

declare cur_table cursor for

with cte(num,tableName,columnName,typeName,max_length) as (

select row_number() over(order by ia.name asc) 'Num' ,

ia.name 'tableName',ib.name 'columnName',

ic.name 'typeName',ib.max_length

from test.sys.objects ia

inner join test.sys.columns ib

on ia.object_id = ib.object_id

inner join test.sys.types ic

on ib.user_type_id = ic.user_type_id

where ia.type ='U' and ia.name = 'abc'

) select num,tableName,columnName,typeName,max_length from cte;

open cur_table

fetch next from cur_table into @num,@tableName,

@columnName,@typeName,@max_length

while(@@FETCH_STATUS = 0)

begin

if(@typeName = 'varchar')

begin

set @str = '

alter table '+@tableName+' alter column
'+@columnName+' nvarchar('+str(@max_length)+')

'

exec(@str);

end

fetch next from cur_table into @num,@tableName,

@columnName,@typeName,@max_length

end

close cur_table;

deallocate cur_table;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐